console命令:将数据记录到specyfic文件(Symfony3和monolog)

时间:2016-10-11 20:02:36

标签: logging symfony monolog

我有一个控制台命令作为服务。 我想记录,该命令是在名为foo.log的日志文件中执行的 - 并且没有其他日志放在那里。

我差不多完成了,但是:

案例A 中,我将所有日志记录到我的specyfic文件(不仅是我想要的那个)

案例B 中,我将我的specyfic日志记录到foo.log文件,但是在运行consol命令时我会在控制台屏幕上显示其他日志。

命令文件

class A extends command 
{
    (...)
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        (...)
        $this->logger->info('done it'); 
    }
}

services.yml

sender.command.fetch.and.send:
    class: ReportsBundle\Command\SendReports
    arguments:
      - "@sender.reports.worker"
      - "@logger"
    tags:
      - { name: console.command }
      - { name: monolog.logger, channel: sender}

案例A (config.yml) - 当我将所有日志发送到foo.log时

monolog:
    handlers:
        sender:
            type:     stream
            path:     '%kernel.logs_dir%/foo.log'
            channels: ~

案例B (config.yml)当我在屏幕上收到不需要的日志时

monolog:
    channels: ['sender']
    handlers:
        sender:
            type:     stream
            path:     '%kernel.logs_dir%/foo.log'
            channels: sender

不需要的日志:

(...)
[2016-10-11 20:48:28] doctrine.DEBUG: SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED [] []
[2016-10-11 20:48:28] doctrine.DEBUG:  [] []
[2016-10-11 20:48:28] event.DEBUG: Notified event "{event}" to listener "{listener}". {"event":"console.exception","listener":"Staffim\\RollbarBundle\\EventListener\\RollbarListener::onConsoleException"} []
(...)

1 个答案:

答案 0 :(得分:0)

我相信你只需要降低你的详细程度

documentation

# app/config/config.yml

monolog:
    handlers:
        console:
            type:   console
            verbosity_levels:
                VERBOSITY_NORMAL: NOTICE
            channels: sender