PHPUnit是否能够捕获syslog消息?

3

我正在测试一个带有打开日志方法的记录器类:

openlog($this->identifier, $this->option, $this->facility);
syslog($level, $message)
closelog();

我的记录器写入的$facility目前设置为LOCAL0

当我对记录器进行单元测试时,我会收到以下消息:

Broadcast message from systemd-journald@myWS:

phpserver7.0[9125]: Logger message  

我该如何使用PHPUnit或我的代码来抑制此消息?
编辑:
只有在记录严重程度为“emergency”的消息时(即严重级别为0),才会出现此问题。

https://en.wikipedia.org/wiki/Syslog#Severity_level

维基百科表示:

此级别不应由应用程序使用。

尽管如此,它仍然是PSR-3记录器抽象的一部分,因此我希望能够使用PHPUnit来抑制消息。

1个回答

1
在您的测试方法中,您可以通过将输出缓冲器包装在生成输出的调用周围来抑制输出。例如:
/**
 * @preserveGlobalState disabled
 * @runInSeparateProcess
 */
public function testOutputCanSend()
{
    ob_start();

    // Do some stuff here that outputs directly, e.g
    openlog($this->identifier, $this->option, $this->facility);
    syslog($level, $message)
    closelog();

    ob_end_clean();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接