PHP Monolog как регистратор печатает только информационный уровень

У меня есть класс, который я загружаю через composer ко всем другим моим классам:

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

class LogStreamer
{

protected static $instance;

public static function getLogger()
{
if(! self::$instance){
self::configureInstance();
}

return self::$instance;
}

private static function configureInstance() {
$logger = new Logger('Q');
$logger->pushHandler(new StreamHandler('/var/log/php/php.log'), Logger::INFO);
self::$instance = $logger;
}

public static function info($message, array $context = []){
self::getLogger()->addInfo($message, $context);
}
public static function debug($message, array $context = []){
self::getLogger()->addDebug($message, $context);
}

Когда я использую его в других классах, это выглядит так:

public function getOptions() {
LogStreamer::debug("Debug happened in log streamer");
LogStreamer::info("Info happened in log streamer");

И это действительно распечатывает вещи:

[2018-07-02 09:56:34] Q.DEBUG: Debug happened in log streamer [] []
[2018-07-02 09:56:34] Q.INFO: Info happened in log streamer [] []

Но, конечно, в этом случае мне нужен только уровень информации журнала. Тем не менее, печатает оба. Как я могу это исправить?

0

Решение

Уровень журнала является параметром StreamHandler конструктор, а не функция pushHandler(),

от:

$logger->pushHandler(new StreamHandler('/var/log/php/php.log'), Logger::INFO);

чтобы:

$logger->pushHandler(new StreamHandler('/var/log/php/php.log', Logger::INFO));

делай что хочешь

2

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

Других решений пока нет …

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