如何使用ConsoleLogger输出日期?

时间:2017-08-22 08:55:08

标签: php symfony

我有一个控制台命令,我在initialize方法中初始化ConsoleLogger:

$this->logger = new ConsoleLogger($output);

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

3 个答案:

答案 0 :(得分:2)

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

根据Symfony文档,您可以指定自定义格式程序(可在旧的Symfony 2.6文档中找到) https://symfony.com/doc/2.6//cookbook/logging/monolog_console.html

    # app/config/services.yml
    services:
        my_formatter:
            class: Symfony\Bridge\Monolog\Formatter\ConsoleFormatter
            arguments:
                # NOTE
                # The placeholder to use in the `format` is enclosed in single `%` (ex.: `%datetime%`)
                # However, here we escape `%` characters so Symfony will not interpret them as service parameters.
                # https://symfony.com/doc/current/configuration.html#configuration-parameters
                - "[%%datetime%%] %%start_tag%%%%message%%%%end_tag%% (%%level_name%%) %%context%% %%extra%%\n"

但是这还没有解决问题。 看一下ConsoleFormatter的来源,我发现了这一点:

    const SIMPLE_FORMAT = "%datetime% %start_tag%%level_name%%end_tag% <comment>[%channel%]</> %message%%context%%extra%\n";
    const SIMPLE_DATE = 'H:i:s';

因此,此处的日期设置为H:i:s。 幸运的是,可以使用date_format选项覆盖此日期。


这是我现在解决的方式:

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

        console:
            type:   console
            process_psr_3_messages: false
            channels: ["!event", "!doctrine", "!console"]
            verbosity_levels:
                VERBOSITY_NORMAL: DEBUG
            formatter: console_log_formatter

在services.yml中,我添加了带有date_format设置的自定义格式化程序

        console_log_formatter:
            class: Symfony\Bridge\Monolog\Formatter\ConsoleFormatter
            arguments:
                - date_format: 'Y-m-d H:i:s'

答案 1 :(得分:0)

我无法发布我的代码,因为我的公司不会允许它。

但是我遇到了这个问题并发现解决问题的唯一方法是扩展ConsoleLogger类并让我的重写log方法以我想要的格式添加日期,然后再将其传递给使用parent::log()

的父类

ConsoleLogger类中没有任何功能可以包含开箱即用的日期。

答案 2 :(得分:0)

也许您需要定义详细程度

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

希望这就是您要寻找的