Расширенный метод addRecord не вызывается механизмом ведения журнала Lumen - PullRequest
0 голосов
/ 26 октября 2018

Я новичок в фреймворке Lumen, и в проекте, в котором я сейчас работаю, я должен использовать расширенный регистратор для регистрации сообщений.

В файле config/logging.php я определил следующий пользовательский канал.

'channels' => [
    'mychannel' => [
        'driver' => 'custom'
        'via' => \MyApp\Globals\MyLogger\MyLoggerFactory::class
    ]
]

Затем в классе MyLoggerFactory я сделал следующее.

class MyLoggerFactory {

    public function __invoke($config) {
        $logger = new MyLogger('lumen');
        $maxFiles = env('APP_MAX_LOG_FILE', 0);
        $filename = storage_path('logs/lumen.log');
        $handler = new RotatingFileHandler($filename, $maxFiles);

        $handler->setFilenameFormat('{date}-{filename}', 'Y-m-d');

        $formatter = new MyLineFormatter(null, "Y/m/d H:i:s.u", true, true);
        $handler->setFormatter($formatter);
        $logger->pushHandler($handler);

        return $logger;
    }
}

Вот пользовательский логгер, который я построил,

use use Monolog\Logger;

class MyLogger extends Logger {
    public function addRecord($level, $message, array $context = array()){
        // my custom logging implementation
    }

}

Однако, когда я пытаюсь что-то зарегистрировать, создается впечатление, что сообщение журнала проходит не через этот расширенный класс, а через базовый класс Monolog Logger. Однако он вызывает правильный метод формата класса MyLineFormatter. Я знаю это, потому что он выдает ошибку, поскольку не может получить доступ к параметрам, которые должен установить мой пользовательский класс логгера. Кроме того, я поставил трассировку стека, и она печатает, что сообщение проходит через базовый класс Logger.

Есть причина для этого? Как я могу исправить эту проблему?

...