
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氏に感謝します)。