Php 如何使用ConsoleLogger输出日期?

Php 如何使用ConsoleLogger输出日期?,php,symfony,Php,Symfony,我有一个console命令,我正在initialize方法中初始化ConsoleLogger: $this->logger=新控制台记录器($output) 但日期不会在控制台中输出。是否可以在输出前加上日期时间前缀?可能需要定义详细级别 $this->consoleLogger = new ConsoleLogger($output, [LogLevel::INFO => OutputInterface::VERBOSITY_NORMAL]); 希望这就是你想要的我知道这是一个老

我有一个console命令,我正在
initialize
方法中初始化ConsoleLogger:

$this->logger=新控制台记录器($output)


但日期不会在控制台中输出。是否可以在输出前加上日期时间前缀?

可能需要定义详细级别

$this->consoleLogger = new ConsoleLogger($output, [LogLevel::INFO => OutputInterface::VERBOSITY_NORMAL]);

希望这就是你想要的

我知道这是一个老话题,但这是你搜索“symfony控制台日志日期”时的第一个结果,这就是为什么我想分享我在尝试解决这个问题时发现的

根据Symfony文档,您可以指定自定义格式化程序(在旧Symfony 2.6文档中找到)

#app/config/services.yml
服务:
我的格式化程序:
类:Symfony\Bridge\Monolog\Formatter\ConsoleFormatter
论据:
#注
#要在“格式”中使用的占位符包含在单个“%”中(例如:“%datetime%”)
#但是,这里我们转义“%”字符,这样Symfony就不会将它们解释为服务参数。
# https://symfony.com/doc/current/configuration.html#configuration-参数
-“[%%datetime%%]%%开始标记%%%消息%%%%%%end标记%%(%level\u name%%)%%%context%%%extra%%\n”
但这还没有达到目的。 查看ConsoleFormatter的源代码,我发现:

const SIMPLE\u FORMAT=“%datetime%%start\u tag%%level\u name%%end\u tag%[%channel%]%message%%context%%extra%\n”;
const SIMPLE_DATE='H:i:s';
所以这里的日期设置为H:i:s。 幸运的是,这个日期可以用
date\u格式
选项覆盖


我现在就是这样解决的:

在我的monolog.yaml中,我添加了格式化程序

控制台:
类型:控制台
处理\u psr\u 3\u消息:错误
频道:[“!事件”、“!条令”、“!控制台”]
详细程度:
详细性\正常:调试
格式化程序:控制台\日志\格式化程序
在services.yml中,我添加了带有日期格式集的自定义格式化程序

控制台日志格式化程序:
类:Symfony\Bridge\Monolog\Formatter\ConsoleFormatter
论据:
-日期格式:“Y-m-d H:i:s”

对不起,我不使用symfony,因此这是一个注释而不是答案;查看到目前为止您所做的是声明
OutputInterface
。似乎您必须执行
$this->logger->log($level,“text”)
才能实际输出消息。(其中$level是日志中消息的级别)请举例说明输出的外观、应如何显示以及命令类的(相关部分)。这是不正确的,因为详细级别不影响日志特定部分的输出,但它决定是否必须输出整个日志行。正确答案是: