Symfony2 - как регистрировать многострочные записи с помощью monolog?
Я пытаюсь зарегистрировать массив с monolog в symfony.
$logger = $this->get('logger');
$logger->info(=print_R($user,true));
вывод, который я получаю, не отформатирован как print_r. Все записывается в одну строку.
У меня нет настроек монолога в моей конфигурации.yml и подозревают, что это может быть проблемой.
Как я могу зарегистрировать print_r (массив) с помощью monolog, чтобы он отображался в формате tail-f?
1 ответов
монолог использует 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