如何测试消息是否已发送到syslog

时间:2015-10-14 13:57:50

标签: linux automated-tests syslog rsyslog

linux程序正在将日志发送到syslog。

为了自动测试这个程序,我需要检查一下,在完成一些操作之后,一条消息已发送到syslog。

不幸的是,syslog文件的位置因系统日志配置而异(取决于一台计算机上的/var/log/messages,另一台计算机上的/var/log/syslog以及其他可能的路径)。

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

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

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

此测试也应该与busybox版本的syslog一起使用。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

您可能希望在邮件中添加一些唯一的运行ID,以便与之前相同内容的邮件不同。处理比删除系统日志要容易得多。