1. 概要

tail コマンドは、ログファイルを監視するために頻繁に使用されます。 この短いチュートリアルでは、 tail の出力を色で拡張して、ログファイルによって伝達される重要な情報を強調する方法について説明します。

2. 入力コマンドの機能を活用する

まず、出力が別のプログラムにパイプされている場合のコマンドの動作について説明します。 具体的には、tailがパイプを介して入力を取得したときに何が起こるかを考えてみましょう。

$ <some_command> | tail

端末の色は、エスケープ文字を使用して生成されます。 デフォルトでは、多くのコマンドがパイプへの書き込みを検出します。 その場合、単色出力を生成します。 そうすることで、色に関連するエスケープ文字が生成されなくなり、出力がよりクリーンになります。これは、たとえば、コンテンツをファイルに保存する場合に適しています。

通常、このようなデフォルトの動作が望ましいです。 ただし、端末で視覚的な出力を生成することを目的としたプログラムにコンテンツをパイプする場合、実際にはそれらのエスケープ文字が必要です。

このような状況に直面した場合、最初にすべきことは、プログラムフィード tail で、パイプに書き込む場合でもカラーを有効にできるかどうかを確認することです。 これは、lsおよびgrepの場合です。–color = always オプションを使用すると、これらのプログラムは、パイプ。

3. 特別なコマンドの使用

このセクションでは、ログに色を付けるための特別なコマンドを含むいくつかのオプションについて説明します。

3.1. grc

grcプログラムは汎用カラーライザーとして動作します。 このプログラムには、複数のログタイプをカバーする一連のルールが付属しており、新しいルールを自由に追加したり、既存のルールを編集したりできます。 デフォルトでは、grcは適切なカラー構成を自動的に決定しようとします。 いくつかの例を見てみましょう:

$ grc dig www.baeldung.com
$ grc ping -c 1 www.baeldung.com

3.2. マルチテール

multitail プログラムは、複数のログを同時に表示したり、正規表現に基づいてフィルタリングしたり、事前定義された配色に従ってエントリに色を付けたりするなど、ログ監視に役立つ機能を多数提供します。

以下の例では、multitailリスト/var / log /messagesを見ることができます。 このコマンドは、適切な配色を自動的に適用します。

$ multitail -i /var/log/messages

multitail は、/etc/multitail.confファイルで入手可能なさまざまな配色を提供します。 -cS オプションを使用すると、目的のオプションを選択できます。 たとえば、zarafaの配色を使用する方法を見てみましょう。

$ multitail -cS zarafa example.log 

/etc/multitail.confファイルにカスタム配色を簡単に追加できます。

3.3. カラーテール

もう1つのシンプルでありながら強力なログカラーライザーは、colortailです。 このツールは、/etc/colortail/conf.colortailにあるデフォルトの色設定ファイルを提供します。 -kまたは–configオプションを使用して代替構成を提供できます。

以下の例では、 colortail は色付きのNginxログを表示し、IPアドレスを強調表示します。

$ colortail /var/log/nginx/access.log

4. 標準のLinuxユーティリティを使用したtail出力の後処理

特定の状況では、標準のLinuxコマンドのみを使用するように制限されています。

このような場合、オプションの1つは、テール出力を処理して色付きのテキストを生成することです。 これは、カラー出力を生成するために必要なエスケープシーケンスを含めることで実現できます。

sedを使用してtailによって生成された出力を色付けする例を見てみましょう。 この組み合わせは、「INFO」を含む行を緑で、「ERROR」を含む行を赤で印刷します。

$ tail -f /var/log/mylog.log | sed \
    -e 's/\(.*INFO.*\)/\x1B[32m\1\x1B[39m/' \
    -e 's/\(.*ERROR.*\)/\x1B[31m\1\x1B[39m/'

5. 結論

この短い記事では、tailコマンドを使用して色付きの出力を生成するための多くのアプローチをナビゲートしました。