GNU/Linux >> Linux の 問題 >  >> Linux

テール出力の色付け

この数年前に脚本を書きました。 highlight の呼び出しを連続してパイプすることで、複数の色のケースを簡単にカバーできます。

README から:

Usage: ./highlight [-i] [--color=COLOR_STRING] [--] <PATTERN0> [PATTERN1...]

This is highlight version 1.0.

This program takes text via standard input and outputs it with the given
perlre(1) pattern(s) highlighted with the given color.  If no color option
is specified, it defaults to 'bold red'.  Colors may be anything
that Perl's Term::ANSIColor understands.  This program is similar to
"grep --color PATTERN" except both matching and non-matching lines are
printed.

The default color can be selected via the $HIGHLIGHT_COLOR environment
variable.  The command-line option takes precedence.

Passing -i or --ignore-case will enable case-insensitive matching.

If your pattern begins with a dash ('-'), you can pass a '--' argument
after any options and before your pattern to distinguish it from an
option.

はい、これを行う方法があります。つまり、端末が ANSI エスケープ シーケンスをサポートしている限り、 .これは存在するほとんどの端末です。

grep、sedなどの方法を説明する必要はないと思います。ポイントは色ですよね?

以下を参照してください。

WARN yellow
ERROR red
foo   green

ここに例があります:

kent$ echo "WARN
ERROR
foo"|sed 's#WARN#\x1b[33m&#; s#ERROR#\x1b[31m&#; s#foo#\x1b[32m&#'

注意 :\x1b ESC の場合は 16 進数です 文字 (^V Esc )。

結果を見るには:


ログに色を付けるための小さなユーティリティである TxtStyle を作成しました。 ~/.txts.conf で強調表示する正規表現を定義します ファイル:

[Style="example"]
!red: regex("error")
green: regex("\d{4}-\d\d-\d\d")
# ...

そして、スタイルを適用します:

txts -n example example.log

または、出力をパイプすることもできます

tail -f example.log | txts -n example


私は何年もの間、これに grc というツールを使用してきました。魅力のように機能します。多くの標準ログ出力とフォーマット用の非常に優れたテンプレートが付属しており、独自の定義も簡単です。私がよく使用するコマンドは

です。
grc tail -f /var/log/syslog

エラーを見つけやすいように syslog 出力を色分けします (通常は赤でマークされます)。

ここでツールを見つけてください:

https://github.com/garabik/grc

(最も一般的な Linux フレーバーのパッケージとしても利用できます)。


Linux
  1. 特定のパターンで最新のログ ファイルを末尾に -f する方法

  2. Linux コマンド出力の最初の行を省略する

  3. カットする配管出力

  1. パイプされた出力をさらに色付けすることは可能ですか?

  2. ps aux 出力の意味

  3. ファイルに何かが書き込まれるのをテールでライブで監視する

  1. Loggedfs構成ファイルの構文?

  2. Sedでテール出力を着色しますか?

  3. Grep And Tail -f?