2개의 다른 로그 파일을 모니터링하고 싶습니다(이벤트가 로그에 나타날 때).
tail -f /var/log/file1 -f /var/log/file2
각 파일에 대해 몇 가지 패턴을 파악하고 싶습니다.
tail -f /var/log/file1 | grep '\(pattern1\|pattern2\)'
tail -f /var/log/file2 | grep '\(pattern3\|pattern4\|pattern5\)'
이 모든 것을 함께 작동시키는 방법을 모르겠습니다. 또한 file1 로그 출력을 빨간색으로, file2 로그 출력을 파란색으로 인쇄하고 싶습니다.
마찬가지로 파일(이 포럼에서 가져온 일부)을 사용하여 이 작업을 수행할 수 있습니다.
RED='\033[0;31m'
BLUE='\033[0;34m'
tail -fn0 /var/log/file1 | while read line;
do
if echo $line | grep -q '\(pattern1\|pattern2\)';then
echo -e "{$RED}$line"
fi
done
하지만 여러 파일로 이 작업을 수행하는 방법을 전혀 모르겠습니다. 어떤 아이디어가 있나요?
답변1
동시에 여러 로그를 구문 분석하려면 다음 구문을 사용할 수 있습니다.
tail -f /var/log/{log1,log2}
이렇게 하면 필요한 모든 로그의 원하는 출력이 생성되므로 매개변수를 사용 -e
하여 grep
여러 스키마를 생성할 수 있습니다. 그럼 모두 함께:
tail -f /var/log/{log1,log2} | grep -ie "pattern1" -ie "pattern2" -ie "pattern3"
grep으로 색칠하려면 살펴보세요.이것훌륭한 답변입니다.
답변2
tail -n 0 -f file1 file2 |
awk -v file1pattern="pattern1|pattern2" -v file2pattern="pattern3|pattern4" \
'/^==> file1 <==$/ { print "\033[0;31m"; pattern=file1pattern };
/^==> file2 <==$/ { print "\033[0;34m"; pattern=file2pattern }; $0 ~ pattern'
답변3
해결책은 다음과 같습니다(Kit 씨와 Duck 씨에게 감사드립니다).