0

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. However, I’d like the former to print to stderr? Can I assign certain writers to priorities? So anything <= Zend\Log\Logger::ERR ends up in stderr while anything else in stdout?

Ermenegildo
  • 1,286
  • 1
  • 12
  • 19
Rob
  • 1,158
  • 1
  • 12
  • 22

1 Answers1

2

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:

Ermenegildo
  • 1,286
  • 1
  • 12
  • 19