简体   繁体   English

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

[英]zend-log: Send errors to stderr, anything else to stdout

Currently my logger is set up like this:目前我的记录器是这样设置的:

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

The downside: Both $logger->err() and $logger->info() now print to stdout .缺点: $logger->err()$logger->info()现在都打印到stdout However, I'd like the former to print to stderr ?但是,我希望前者打印到stderr Can I assign certain writers to priorities?我可以为某些作者分配优先级吗? So anything <= Zend\\Log\\Logger::ERR ends up in stderr while anything else in stdout ?所以任何<= Zend\\Log\\Logger::ERR最终在stderr而在stdout其他任何东西?

You can add as many writers as you want, and filter them by their priority.您可以根据需要添加任意数量的编写器,并按优先级过滤它们。

// 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);

You can find more information in the docs:您可以在文档中找到更多信息:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM