我有一个控制台命令作为服务。 我想记录,该命令是在名为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"} []
(...)
答案 0 :(得分:0)
我相信你只需要降低你的详细程度
# app/config/config.yml
monolog:
handlers:
console:
type: console
verbosity_levels:
VERBOSITY_NORMAL: NOTICE
channels: sender