持续监控偶尔旋转的尾部原木

持续监控偶尔旋转的尾部原木

我们正在使用 tail 来连续监控多个日志,但是当某个日志被轮换时,该文件的 tail 将停止。

据我了解,问题在于当日志被轮换时,会创建一个新文件,而正在运行的尾部进程对该新文件句柄一无所知。

答案1

啊,这里有一面旗帜。

tail -f /var/log/file我们不应该使用tail -F /var/log/file


tail -F翻译为tail --follow=name --retry

  • --follow=name:遵循文件的名称而不是文件描述符
  • --retry:如果文件无法访问,请稍后重试,而不是死机

答案2

# tail --follow=mylog.log

男人尾巴

With --follow (-f), tail defaults to  following  the  file  descriptor,
       which  means that even if a tail’ed file is renamed, tail will continue
       to track its end.  This default behavior  is  not  desirable  when  you
       really want to track the actual name of the file, not the file descrip‐
       tor (e.g., log rotation).  Use --follow=name in that case.  That causes
       tail  to track the named file by reopening it periodically to see if it
       has been removed and recreated by some other program.

因此在这种情况下使用该-F选项是正确的。

-F     same as --follow=name --retry

答案3

确切的答案取决于您的操作系统 - 但在很多情况下,tail -F会做正确的事情。

答案4

恕我直言,按大小而不是按日期更改日志文件有点奇怪。大多数系统日志(在 unix 或 linux 中)按周或月轮换,而不是基于大小...出于各种原因,我喜欢这样做,如果实施,也可以解决您的问题。

八年后,我不知道我在这里到底在说什么:有很多地方你想要按大小旋转,因为每日/每周/每月的旋转会产生大量的文件,这可能会导致严重的问题。

从更有经验的角度来看,真正的问题是为什么您要坐下来不断地跟踪一个增长如此之快的文件,以至于您每天都要轮换它......这就像观看黑客帝国的流逝。

现在你最好研究一些大数据日志聚合,比如 Splunk 或 Sumologic,它可以将日志事件过滤成类并根据特定的日志值触发……根本不需要查看实时日志。

相关内容