持续监控日志,尾部偶尔旋转

我们使用尾部来连续监视几个日志,但是当一个日志被旋转时,那个文件的尾部将会停止。

据我所知,问题是,当日志旋转,有一个新的文件创build,运行尾进程不知道任何关于新的文件句柄。

啊,这是一个标志。

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


tail -F翻译成tail --follow=name --retry ;

  • --follow=name :跟随文件的名称而不是文件描述符
  • --retry :如果文件不可访问,请稍后重试,而不是死亡
 # 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 (eg, 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 

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

尾巴-F或尾巴 – 追随者=名字

我在我的生产服务器上使用命令:

 tail --follow var/log/apache-access_log --retry 

恕我直言,这是有点奇怪的改变你的日志文件的大小,而不是date。 大多数系统日志(在Unix或Linux),每周或每月轮换,而不是基于大小…这是我喜欢的各种原因,还有一些,如果实施,将解决您的问题。

八年后,我不知道自己到底在说些什么:有很多地方要旋转,因为每天/每周/每月的旋转会产生大量的文件,这会造成严重的问题。

从一个更有经验的angular度来看,真正的问题是为什么你要坐下来,不断地拖拽一个文件,这个文件的增长速度太快了,以至于你每天都在旋转文件……这就好像看着Matrixstream一样。

现在,您最好查看一些像Splunk或Sumologic这样的大型数据日志聚合,它可以将日志事件过滤到类中,并根据特定的日志值进行触发…根本不需要观看实时日志。

而且,对于您的目的而言,这可能有点过于沉重,但是splunk有一个尾巴function来完成您想要的function。 每天可以免费使用500 MB,但是如果您的数据超过了这个数量,则不值得花费。