查找日志文件不同版本之间的差异

查找日志文件不同版本之间的差异

是否有一个实用程序可以向您显示某一时间点和当前时刻的日志文件目录的差异?

目前调试应用程序的方法是删除问题发生前的所有日志,然后重现错误并保存新日志。但是,是否有一个实用程序可以帮助我做到这一点,并避免删除现有的日志文件?

我正在寻找基于 Linux 的实用程序。我也只关心新内容,而不关心任何旧日志。

答案1

好吧,如果一个简单的 cron 作业就可以了,你可以设置如下内容:

  1. 运行root并将crontab -e此行添加到您的 crontabs:

    00 22 * * * tar czf /log_backups/`date +%m%d%Y`.tgz /var/log/ 
    

    这将在每晚 22:00 运行,并在目录中创建一个名为 .tgz 的档案/log_backups/。因​​此,如果今天是 2013 年 4 月 16 日,它将创建一个名为 04162013.tgz 的档案

  2. 如果您想将今天的 apache 日志与昨天的日志进行比较,只需提取相关的 tar 球并比较文件(显然,您需要备份昨天的日志):

    tar xzf /log_backups/03162013.tgz -C /tmp/
    diff /var/log/apache2/error.log /tmp/var/log/apache2/error.log
    

您可以通过从档案中仅提取相关文件,或者选择要添加到档案中的文件等,使其更加复杂。

答案2

为什么不使用logrotate(man)?

看起来这正是您正在寻找的:

logrotate 旨在简化生成大量日志文件的系统的管理。它允许自动轮换、压缩、删除和邮寄日志文件。每个日志文件可以按日、周、月或当其变得太大时进行处理。

通常,logrotate 是作为每日 cron 任务运行的。它不会在一天内多次修改日志,除非该日志的标准基于日志的大小并且 logrotate 每天运行多次,或者除非使用了 -f 或 --force 选项。

命令行上可以给出任意数量的配置文件。后面的配置文件可能会覆盖前面文件中给出的选项,因此 logrotate 配置文件的列出顺序很重要。通常,应使用包含任何其他所需配置文件的单个配置文件。有关如何使用 include 指令实现此目的的更多信息,请参阅下文。如果在命令行上给出了目录,则该目录中的每个文件都将用作配置文件。

如果没有给出命令行参数,logrotate 将打印版本和版权信息以及简短的使用摘要。如果在旋转日志时发生任何错误,logrotate 将以非零状态退出。

相关内容