PHP Monolog как регистратор печатает только информационный уровень - PullRequest
0 голосов
/ 02 июля 2018

У меня есть класс, который я автоматически загружаю через 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 [] []

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

1 Ответ

0 голосов
/ 03 июля 2018

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

от

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

до:

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

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

...