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

増加するログファイルの新しいエントリのみを表示する
tail -f x.log

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

tail -f私は実行前にファイルに記録されたログ行ではなく、実行後にファイルに記録されたログ行を表示することにのみ興味がありますtail -f。ただし、tail -f起動時にコマンドは最後の10行を取得して表示します。

これは私を混乱させます。時々、これらのログは新しく作成されたのですか(または)古いログですか?

それでは、tail -fをカスタマイズして新しい項目のみを出力するにはどうすればよいですか?

答え1

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

tail -n0 -f x.log

~からマニュアルページ:

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

答え2

この-n0オプションを使用して行0を表示できます。だから

tail -n0 -f some.log

答え3

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

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

答え4

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
}

役に立ったことを願っています!

関連情報