【问题标题】:How to test that a message has been sent to syslog如何测试消息是否已发送到 syslog
【发布时间】:2016-01-12 15:53:51
【问题描述】:

一个 linux 程序正在向 syslog 发送日志。

要自动测试这个程序,我需要检查在某些操作完成后是否有消息发送到 syslog。

很遗憾,系统日志文件的位置因系统日志配置而异(/var/log/messages 在一台计算机上,/var/log/syslog 在另一台计算机上,可能还有其他路径)。

如何以编程方式知道 syslog 文件的当前路径?

如果我知道日志路径,如何检测日志消息?我可以 grep 日志文件并检查 grep 命令的返回值,但是:

  • 如何处理可能同时发生的日志轮换?
  • 如何处理测试可能需要重复并再次工作的事实(在测试前删除日志文件?)

这个测试也应该适用于系统日志的busybox版本。

【问题讨论】:

    标签: linux automated-tests syslog rsyslog


    【解决方案1】:

    可能最好的方法是插入一个共享库(使用LD_PRELOAD),您可以在其中提供您自己的syslog 函数的可验证实现,以便进行单元测试。您根本不必让消息发送到已安装的 syslog 守护程序(除非您愿意)。

    【讨论】:

      【解决方案2】:

      我相信您可以从 eiter /etc/rsyslog.conf 或 /etc/syslog.conf 中检索位置

      至于第二个问题-您可以grep <msg> /var/log/syslog* 在每个日志中查找它,包括旋转的。

      您可能希望在您的消息中添加一些唯一的运行 id,以便与相同内容的先前消息区分开来。这应该比删除系统日志要容易得多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-04
        • 2020-10-24
        • 2016-03-16
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 2023-02-11
        相关资源
        最近更新 更多