Symfony2 - как регистрировать многострочные записи с помощью монолога?
Я пытаюсь записать массив с помощью monolog в symfony.
$logger = $this->get('logger');
$logger->info(=print_R($user,true));
Вывод, который я получаю, не отформатирован так, как ожидалось бы print_r. Он регистрирует все это в одной строке.
У меня нет никаких настроек монолога в моей конфигурации.yml и подозревают, что это может быть проблемой.
Как я могу зарегистрировать print_r (массив) с помощью monolog, чтобы он отображался в формате tail-f?
1 ответ:
Monolog использует
Monolog\Formatter\LineFormatter
по умолчанию без каких-либо аргументов. Форматер-это в основном объект, который отвечает за конечный вывод в ваших журналах. Посмотрите на определение конструктора:public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false)
Как вы можете видеть, LineFormatter создает одну строку из вашего вывода print_r из-за третьего аргумента. Вам нужно определить новый сервис с пользовательскими аргументами для
LineFormatter
.Теперь найдите свое определение монолога и используйте форматер для того, что вам нужно.# app/config/services.yml - for example services: monolog.my_line_formatter: # Your name class: Monolog\Formatter\LineFormatter arguments: [~, ~, true]
# Example from default config_dev.yml monolog: handlers: main: type: stream path: "%kernel.logs_dir%/%kernel.environment%.log" level: debug formatter: monolog.my_line_formatter