tail -f 表示カラー出力の作成方法

tail -f 表示カラー出力の作成方法

次のメッセージを含むサーバーログファイルの出力を追跡できるようにしたいです。

INFO
SEVERE

次に、その場合はSEVERE行を赤で表示し、そうであればINFO緑で表示します。これを行うのに役立つように、コマンドにどのエイリアスを設定できますかtail

答え1

試してみてくださいマルチテール1. これは権利の超一般化であるtail -f。別のウィンドウで複数のファイルを表示したり、内容に応じて行を強調表示したりすることができます。

multitail -c /path/to/log

色は設定可能です。デフォルトのカラースキームが適切でない場合は、設定ファイルに直接作成してください。たとえば、multitail -cS amir_log /path/to/log次のコマンドを使用して呼び出します~/.multitailrc

colorscheme:amir_log
cs_re:green:INFO
cs_re:red:SEVERE

サーバーがインストールしにくい場合の別の解決策基準tail -f色選択制御シーケンスを追加するためにsedまたはawkで使用するツールです。これを行うには、tail -fstdoutがパイプの場合でもstdoutをすぐにフラッシュする必要があります。すべての実装がこれを行うかどうかはわかりません。

tail -f /path/to/log | awk '
  /INFO/ {print "\033[32m" $0 "\033[39m"}
  /SEVERE/ {print "\033[31m" $0 "\033[39m"}
'

またはsed

tail -f /path/to/log | sed --unbuffered \
    -e 's/\(.*INFO.*\)/\o033[32m\1\o033[39m/' \
    -e 's/\(.*SEVERE.*\)/\o033[31m\1\o033[39m/'

sedがGNU sedでない場合は、\o033リテラルエスケープ文字に置き換えてください--unbuffered

もう一つの可能​​性はtail -f実行することですEmacsシェルバッファを使用し、Emacsの構文カラー機能を使用します。

¹歴史的なウェブサイト2021年初めに消えます。最新バージョンは、次のような多くのディストリビューションで引き続き使用できます。アーチダーバン

答え2

GRC、ユニバーサルシェーダーはかなりクールです。

apt-get install grc

ただ

grc tail -f /var/log/apache2/error.log

楽しむ!

あなたも探しています。GitHub

答え3

見たことがありますか?西沢-cオプションを使用するか、設定ファイルから直接特定のキーワードのデフォルトの色をカスタマイズできます。日焼け後に画面が鮮明になったら、オプションを使用する必要があります-A

編集する:

線全体を赤で表示するには、次のことを試すこともできます。

$ tail -f myfile.log | perl -pe 's/.*SEVERE.*/\e[1;31m$&\e[0m/g'

\e[1;31m赤をあげます。黄色が欲しい場合はそれを使用し\e[1;33m、緑が必要な場合はそれを使用してください\e[1;32m\e[0mプレーンテキストの色を復元します。

答え4

あなたはそれを使用することができます、正規表現に基づいて線の色を指定します。

rainbow --red='SEVERE.*' --green='INFO.*' tail -f my-file.log

それもバンドル事前定義された構成、例えばTomcatログ:

rainbow --config=tomcat tail -f my-file.log

(免責事項:私は著者です)

関連情報