如何仅从Linux日志文件中获取新行?

时间:2018-10-10 15:34:57

标签: python linux python-3.x unix logging

我有两个想法。首先,我认为我已读取文件,将其删除,并且日志记录最终将重新创建它(我错了)。第二次尝试,我想我会复制该文件,并在一段时间后将其与原始文件进行比较。你怎么看?第二种方法是一个好的选择吗?如果是这样,什么是有效比较文件的好方法? IMO这将是非常低效的,因为我必须读取两次大日志文件并逐行比较它...

我也被其他方法所吸引。

使用轮询的方法并不是理想的选择,这应该是我使用crontab调用的一项工作。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果您运行的平台使用systemd,则可以使用journalctl命令。

journalctl命令具有一个非常强大的--since选项

您可以使用它在特定时间后获取日志:

journalctl --since "2018-10-08 13:00:00"

查看时间之间的日志

journalctl --since "2018-10-08 13:00:00" --until "2018-10-08 13:30:00"

或者N时间前

journalctl --since "10min ago"

要查看特定的应用程序日志,请使用-u选项

journalctl -u tomcat.service --since "1 hr ago"

参考:

https://www.digitalocean.com/community/tutorials/how-to-use-journalctl-to-view-and-manipulate-systemd-logs

https://www.loggly.com/ultimate-guide/using-journalctl/

答案 1 :(得分:0)

那又怎么样:

   $ tail -f /var/log/long_file.log