web-dev-qa-db-ja.com

拡大するログファイルの新しいエントリのみを表示する

tail -f x.log

このコマンドを使用して、コマンドプロンプトで増大するログファイルを確認します。

tail -fを実行した後にファイルに書き込まれたログ行を確認することにのみ関心があり、tail -fを実行する前にファイルに書き込まれたログには関心がありません。しかし、開始時にtail -fコマンドは、最後の10行を取り、それを表示します。

これは私を混乱させます、時々これらのログが新しく生成された(または)それらが古いログである場合?

では、新しいエントリのみを出力するようにtail -fをカスタマイズするにはどうすればよいですか?

20
user93868

あなたが試すことができます:

tail -n0 -f x.log

man page から:

-n、-lines =K
最後の10行ではなく、最後のK行を出力します。または-n + Kを使用して、K番目で始まる行を出力します

31
taliezin

-n0オプションで0行を表示します。そう

tail -n0 -f some.log
12
fredtantini

次のようにlessコマンドを使用することもできます

  1. less file_name.log(ログファイルが開かれ、ログファイルの最初のページが表示されます)
  2. 押す shift + f (tail -fと同じように動作します)
  3. ログファイルでキーワードを検索する必要がある場合。押す ctrl + c テールモードを終了し、キーワードを次のように検索します /キーワードと ?キーワード。
2
Ragu Rathish

Dockerコンテナー内のエントリを監視する必要があるときに、このアプローチを作成しました。

LOG_COUNT=0
LOGS=/var/logs/your_logs

function HEART_BEAT() {
    LOG_COUNT_NEW=$(wc -l $LOGS | awk '{ print $1 }')
    tail -n $(( $LOG_COUNT_NEW - $LOG_COUNT )) $LOGS
    LOG_COUNT=$LOG_COUNT_NEW
}

お役に立てれば!

0