控制台命令:将数据记录到特定文件(Symfony 3 和 monolog)

console command: log data to a specyfic file (Symfony3 and monolog)

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

我差不多完成了,但是:

案例 A 中,我将所有日志都保存到我的特定文件中(不仅是我想要的那个)

case B 中,我将我的特定日志记录到 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"} []
(...)

我相信你只需要降低你的冗长级别

参见documentation

# app/config/config.yml

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