zend-log:将错误发送到stderr,将其他任何错误发送到stdout

时间:2019-11-27 11:59:21

标签: php logging zend-framework3 zend-log

目前,我的记录器的设置如下:

$logger = new Zend\Log\Logger();
$logger->addWriter(new Zend\Log\Writer\Stream('php://stdout'));

缺点:$logger->err()$logger->info()现在都打印到stdout。但是,我希望前者打印到stderr吗?我可以为某些作家分配优先级吗?那么,<= Zend\Log\Logger::ERR的任何内容都以stderr结尾,而其他任何内容的却是stdout

1 个答案:

答案 0 :(得分:2)

您可以根据需要添加任意数量的作者,并按其优先级对其进行过滤。

// Add ERROR writer
$logger = new Logger();
$errorWriter = new Stream('php://stdout');
// Filter logs only for ERROR priority
$errorWriter->addFilter(new Priority(Logger::ERR, '='));
$logger->addWriter($errorWriter);

// Add INFO writer
$infoWriter = new Stream('php://stderr');
// Filter logs only for INFO priority
$infoWriter->addFilter(new Priority(Logger::INFO, '='));
$logger->addWriter($infoWriter);

您可以在文档中找到更多信息: