Monolog — регистрация только определенного уровня ошибок

Я использую Monolog в ванильном PHP-приложении.

Я хотел бы регистрировать ошибки только определенного уровня — INFO и не выше, так как у меня есть другие обработчики для этого.

Вот мой код:

<?php
$logger = new Logger('mylogger');
$logger->pushHandler(new StreamHandler(__DIR__.'/log/errors.log', Logger::WARNING));
$logger->pushHandler(new StreamHandler(__DIR__.'/log/info.log', Logger::INFO));

Есть ли способ записать только информационные сообщения в info.log?

2

Решение

У меня была та же проблема сегодня, которая привела меня сюда. Во всяком случае, я решил это с помощью монологов FilterHandler.

FilterHandler позволяет передавать в качестве аргумента другой обработчик, а затем указывать минимальный и максимальный уровни ведения журнала, которые будут запускать этот обработчик.

Есть несколько других обработчиков это может быть полезно в определенных ситуациях.

// Create the logging instance
$logger = new \Monolog\Logger('myLogger');

// Create error stream handler for error events and higher
$errorStreamHandler = new \Monolog\Handler\StreamHandler(
'Some/DirectoryPath/error.log',
\Monolog\Logger::ERROR);

// Create info stream handler for info events and higher
$infoStreamHandler = new \Monolog\Handler\StreamHandler(
'Some/DirectoryPath/Info.log',
\Monolog\Logger::INFO);

// Create filter handler to make sure info stream only logs info events
// Pass in the info handler
// Debug is the minimum level this handler will handle
// Info is the maximum level this handler will handle
$infoFilterHandler = new \Monolog\Handler\FilterHandler(
$infoStreamHandler,
\Monolog\Logger::DEBUG,
\Monolog\Logger::INFO);

// Add the handlers to logger
$logger->pushHandler($errorStreamHandler);
$logger->pushHandler($infoFilterHandler);

// Yay no errors in Info.log
$logger->addError("Some Error");
$logger->addInfo("Some Info");

Обновить Али
Обратитесь к исходный код из \ Monolog \ Logger, чтобы посмотреть, какие константы доступны, затем назначьте константу переменной.

$someVar = \Monolog\Logger::INFO;

$infoStreamHandler = new \Monolog\Handler\StreamHandler(
'Some/DirectoryPath/Info.log',
$someVar);
5

Другие решения

установить для параметра buubble значение false

$ logger-> pushHandler (новый StreamHandler (DIR.’/log/info.log’, Logger :: INFO, false));

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector