動的に生成された複数のログファイルを結合ビューで追跡する方法

動的に生成された複数のログファイルを結合ビューで追跡する方法

ログファイルのあるディレクトリがあり、新しいファイルが随時追加されます。それらを結合ビューで 'tailf' したい (すべてのファイルのすべての行を結合して表示)

このために lnav が推奨されているのを何度か見ましたが、機能の説明に基づくとこれらのオプションをサポートするはずですが、ドキュメントが十分に明確ではありません。

具体的には、ディレクトリを追跡するためにlnavを実行すると、f\Fキーを使用してログファイルを切り替えることができますが、結合されたビューは表示されません。

答え1

確かに、 を使用しても、あなたのニーズを満たす良い解決策は見つかりませんlnav。私が考えられる最善の方法はtail -f、すべてのログ ファイルで を使用することです。

tail -f file_1.log ... file_n.log

これを使用する別のソリューションにはlogtailいくつかの欠点がありますが、新しいログ ファイルが随時追加されるケースを処理します。

#!/bin/bash

# Quietly initialize logtail offset files
for logfile in *log
do
    logtail $logfile
done > /dev/null


while :
do
    # wait a second for new logs
    sleep 1
    for logfile in *log
    do  
        # output new logs since last logtail run, prepend with log filename
        logtail $logfile | sed "s/^/$logfile: /"
    done
done

答え2

ファイルにタイムスタンプがあり、ファイル形式が理解できる場合、lnav でログメッセージの組み合わせビューを取得できます。lnav がログファイル形式を理解しない場合は、ファイルをプレーンテキストとして扱います。新しい形式定義は、その説明に従って作成できます。ドキュメンテーション

関連情報