Использование Monolog
В конструктор передаётся название канала. Канал определяет стек обработчиков — набор методов, через которые проходит лог.
logger— основной объект, используемый для записи. Сам логгер ничего не пишет. Он управляет хендлерамиhandler— занимается записью логов. В одном логгере можно указать множество хандлеров. Они будут вызываться по очереди. Примеры.StreamHandlerпишет лог в стрим (в файл, в STDOUT)SyslogHandlerпишет лог в syslog
processor— позволяет изменять лог: добавлять дополнительные данные (timestamp, название машины, ip адрес)formatterпозволяет форматировать лог. Например, преобразовать в jsonlevel— уровень ошибки. Монолог поддерживает уровни ошибок, описанные в RFC 5424\Monolog\Logger::DEBUG— 100- ...
\Monolog\Logger::EMERGENCY— 600
bubble— всплытие. Хендлеры работают по очереди. Этот процесс называется Всплытие. Если отключить всплытие - передача следующему хендлеру не произойдёт- Последний добавленный хендлер запустится самым первым
Ссылки на документацию
<?php
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
$stdOutHandler = new StreamHandler(STDOUT);
$logger = new Logger('my-channel');
$logger->pushHandler($stdOutHandler);
$logger->info('Message', ['user' => 'user name']);
Структура сообщения
message— сообщениеlevel— важность лога — числовое значениеlevel_name— важность лога — строковое значениеcontext— то что послали вторым параметромchannel— имя каналаdatetime— время срабатывания логаextra— сюда процессоры могут складывать данные
Фильтрация логов по уровню ошибки
Необходимо к стандартному обработчику добавить ещё один обработчик, который будет отдельно логгировать только error логи.
Отличие от параметра $level в конструкторе хендлера в том, что такой обработчик позволяет ограничить уровень с двух сторон.
<?php
$logger = new \Monolog\Logger('logger');
$commonHandler = new \Monolog\Handler\StreamHandler('logger.log');
// второй параметр позволяет указать минимальный уровень лога
// третий параметр позволяет указать максимальный уровень лога
$onlyErrorLog = new \Monolog\Handler\FilterHandler(
new \Monolog\Handler\StreamHandler('error.log'),
\Monolog\Logger::ERROR,
\Monolog\Logger::ERROR,
);