尾のさまざまなソースの色付け


19

さまざまなログを監視しています

tail -q -f /var/log/syslog -f /var/log/fail2ban.log -f /var/log/nginx/error.log

各ログの出力に異なる色を付けるにはどうすればよいですか?



@MattBiancoありがとう、multitailこの質問の内容とその答えを見てみましょう
ダニエルW. 14

1
以下のすばらしい回答に加えて、unix.stackexchange.com / questions / 26313 / colored-find-outputをチェックアウトすることもできます。これは、出力ファイルの色付けをさらに行う方法を示しています。
ジョー14

回答:


21

grep着色にGNU を使用する:

color() { GREP_COLOR=$1 grep --color '.*'; }

(tail -qf /var/log/syslog | color 31 &
tail -qf /var/log/fail2ban.log | color 32 &
tail -qf /var/log/nginx/error.log | color 33)

最初の2つはバックグラウンドで開始されることに注意してください。これは、キーを押してもそれらが殺されないことを意味しますCtrl-C(シェルは非同期ジョブのSIGINTを明示的に無視します)。

それを防ぐには、代わりに次のようにします。

color() { GREP_COLOR=$1 grep --line-buffered --color=always '.*'; }

(tail -qf /var/log/syslog | color 31 &
tail -qf /var/log/fail2ban.log | color 32 &
tail -qf /var/log/nginx/error.log | color 33) | cat

そうCtrl-Cすれば、で、最後のtail+grepand catdie(SIGINTの)および他の2つのgrep + tailは、次に何かを書くときにSIGPIPEで死にます。

または、SIGINTハンドラーを復元します(すべてのシェルで動作しません)。

color() { GREP_COLOR=$1 grep --color '.*'; }

((trap - INT; tail -qf /var/log/syslog | color 31) &
(trap - INT; tail -qf /var/log/fail2ban.log | color 32) &
tail -qf /var/log/nginx/error.log | color 33)

color関数でそれを行うこともできます。これはには適用されませんtailtail、次回の書き込み時にSIGPIPEが死んだ場合にgrep死にます。

color() (trap - INT; GREP_COLOR=$1 exec grep --color '.*')

(tail -qf /var/log/syslog | color 31 &
tail -qf /var/log/fail2ban.log | color 32 &
tail -qf /var/log/nginx/error.log | color 33)

または、tail + grep全体を関数にします。

tailc() (trap - INT; export GREP_COLOR="$1"; shift; tail -qf -- "$@" |
   grep --color '.*')
tailc 31 /var/log/syslog &
tailc 32 /var/log/syslog &
tailc 33 /var/log/nginx/error.log

または全部:

tailc() (
  while [ "$#" -ge 2 ]; do
    (trap - INT; tail -f -- "$2" | GREP_COLOR=$1 grep --color '.*') &
    shift 2
  done
  wait
)

tailc 31 /var/log/syslog 32 /var/log/syslog 33 /var/log/nginx/error.log

これを「watch.sh」スクリプトに入れると、コンソールに戻りますが、メッセージが出力されます。i.imgur.com/ yaiBwMo.pngを
W.

@ダン、編集を参照してください
ステファンシャゼラス14

この回答を書いてくれてありがとう、私tailcはスクリプトで最もよく機能し、最も直感的に見える機能を使いました。
ダニエルW. 14

4

このような何かが私のために働いた:

(tail -f /var/log/syslog | awk -W interactive '{printf "\033[1;31m%s\033[0m\n", $0}' & \
tail -f /var/log/auth.log | awk -W interactive '{printf "\033[1;32m%s\033[0m\n", $0}' & \
tail -f /var/log/Xorg.0.log | awk -W interactive '{printf "\033[1;34m%s\033[0m\n", $0}')

説明:

  • tail -f file:ファイルが大きくなるとデータを追加します
  • awk -W interactiveawk対話モードに設定
  • '{printf "\033[1;31m%s\033[0m\n", $0}' カラー化された出力を端末に出力します。
  • \033[1;31m 赤を意味する
  • \033[1;32m 緑を意味する
  • \033[1;34m 青を意味する

-W interactiveであるように思わmawk固有。(mawkデフォルトで入力をバッファリングする方法も一意であり-W interactive、他のawk実装では必要ありません)。
ステファンシャゼル14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.