我正在尝试使用monolog
中的symfony
记录数组。
$logger = $this->get('logger');
$logger->info(=print_R($user,true));
我得到的输出未格式化为预期的print_r。它全部记录在一行上。
我的
config.yml
中没有任何独白设置,并且怀疑这可能是问题所在。如何使用Monolog记录
print_r(array)
,使其以tail -f
格式显示? 最佳答案
默认情况下,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