我正在用C ++编写命令行工具,根据--logfile
参数 - 记录到syslog
或给定文件。我想测试此功能(使用googletest
)。
为了测试文件部分,我运行带有和不带MyApp::main()
参数的--logfile
函数,并测试日志消息是否出现在文件中。
有没有办法为syslog
测试相同的内容?我可以阅读/var/log/syslog
并希望获得最佳效果,但这不是非常便携,因为许多系统会将syslog
保留在其他位置。
我正在使用不提供模拟的logging library
,因此这不是一个选项。他们在内部使用对syslog
守护程序(man(3) syslog
)的调用。是否有可移植的方法从此守护进程获取syslog
?或者来自其他地方?
答案 0 :(得分:1)
我正在使用不提供模拟的日志库,
所以在某些时候你正在调用写入syslog的库函数。这是你嘲笑需要发生的地方。在X条件下,库函数使用以下参数调用一次... ext。
一般情况下,我在测试中发现您遇到A - >的情况。 B - > C,其中A是您正在编写的代码,B是第三方库,C是输出,您只能测试您是否正确地与B交互而无法测试C.
当使用第三方代码时,你基本上相信它可以做它所说的(除非它是开源的,你为它们的代码库编写测试)。
答案 1 :(得分:1)
您可以使用库预加载(LD_PRELOAD
)使您的程序在您提供的库中调用syslog
而不是系统syslog
。然后,您的实施可以记录到您可以随后检查的文件中。