仅查看不断增长的日志文件中的新条目

仅查看不断增长的日志文件中的新条目
tail -f x.log

我使用此命令在命令提示符中查看不断增长的日志文件。

我只对查看运行后写入文件的日志行感兴趣tail -f,对执行之前写入文件的日志不感兴趣tail -f。但是tail -f启动时的命令会获取最后 10 行并显示它。

这让我很困惑,有时这些日志是新生成的(还是)是旧日志?

那么,我如何自定义 tail -f 以仅输出新条目?

答案1

你可以试试:

tail -n0 -f x.log

手册页:

-n,--行=K
输出最后K行,而不是最后10行;或使用 -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
}

希望这可以帮助!

相关内容