捕获测试用例的syslog

时间:2016-06-16 18:58:35

标签: c++ linux testing googletest syslog

我正在用C ++编写命令行工具,根据--logfile参数 - 记录到syslog或给定文件。我想测试此功能(使用googletest)。

为了测试文件部分,我运行带有和不带MyApp::main()参数的--logfile函数,并测试日志消息是否出现在文件中。

有没有办法为syslog测试相同的内容?我可以阅读/var/log/syslog并希望获得最佳效果,但这不是非常便携,因为许多系统会将syslog保留在其他位置。

我正在使用不提供模拟的logging library,因此这不是一个选项。他们在内部使用对syslog守护程序(man(3) syslog)的调用。是否有可移植的方法从此守护进程获取syslog?或者来自其他地方?

2 个答案:

答案 0 :(得分:1)

  

我正在使用不提供模拟的日志库,

所以在某些时候你正在调用写入syslog的库函数。这是你嘲笑需要发生的地方。在X条件下,库函数使用以下参数调用一次... ext。

一般情况下,我在测试中发现您遇到A - >的情况。 B - > C,其中A是您正在编写的代码,B是第三方库,C是输出,您只能测试您是否正确地与B交互而无法测试C.

当使用第三方代码时,你基本上相信它可以做它所说的(除非它是开源的,你为它们的代码库编写测试)。

答案 1 :(得分:1)

您可以使用库预加载(LD_PRELOAD)使您的程序在您提供的库中调用syslog而不是系统syslog。然后,您的实施可以记录到您可以随后检查的文件中。