linux程序正在将日志发送到syslog。
为了自动测试这个程序,我需要检查一下,在完成一些操作之后,一条消息已发送到syslog。
不幸的是,syslog文件的位置因系统日志配置而异(取决于一台计算机上的/var/log/messages
,另一台计算机上的/var/log/syslog
以及其他可能的路径)。
如何以编程方式知道syslog文件的当前路径?
如果我知道日志路径,如何检测日志消息?我可以grep日志文件并检查grep命令的返回值,但是:
此测试也应该与busybox版本的syslog一起使用。
答案 0 :(得分:2)
可能最好的方法是插入一个共享库(使用LD_PRELOAD
),您可以在其中提供自己的syslog
函数的可验证实现,以用于单元测试。您根本不必让消息转到已安装的syslog守护程序(除非您愿意)。
答案 1 :(得分:0)
我相信您可以从eiter /etc/rsyslog.conf或/etc/syslog.conf中检索位置
关于第二个问题 - 您可以grep <msg> /var/log/syslog*
在每个日志中查找它,包括轮换。
您可能希望在邮件中添加一些唯一的运行ID,以便与之前相同内容的邮件不同。处理比删除系统日志要容易得多。