【问题标题】:PHPUnit picking up on syslog messages?PHPUnit 接收系统日志消息?
【发布时间】:2016-12-15 12:08:05
【问题描述】:

我正在测试一个记录器类,其方法可以像这样打开日志:

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 或在我的代码中隐藏此消息?

编辑:

这似乎只发生在我记录严重级别为“紧急”的消息时,即严重级别为 0。

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

维基百科指出:

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

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

【问题讨论】:

    标签: php logging phpunit syslog


    【解决方案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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      相关资源
      最近更新 更多