0

我正在创建一个自定义命令,并且我想使用不同的日志文件。

在文档中它说我必须标记我的服务。但是我的自定义命令不是服务,是吗?我应该把它变成服务吗?

4

2 回答 2

1

第二个文档适用于您要创建自定义记录器的情况。但是如果你只是想改变保存日志的文件,你不需要这样做,你只需要设置 monolog 'path' 配置。有关更多信息,请参阅

此外,您在 get('logger') 时检索的对象是从 Monolog\Logger 类派生的。该类有两个方法:pushHandler() 将处理程序添加到处理程序堆栈,popHandler() 将处理程序删除到处理程序堆栈。也许在您的命令中,您可以弹出所有标准处理程序,然后使用您的自定义路径推送 Monolog\Handler\StreamHandler 的实例。

于 2012-09-16T10:20:38.860 回答
0

首先,我推动 NullHandler 使其他处理程序无效。然后我为信息消息添加了一个处理程序,为所有消息添加了另一个处理程序,只有在出现警告、错误等时才会触发

$logger = $this->getContainer()->get('logger');
$logger->pushHandler(new NullHandler);
$logger->pushHandler(new StreamHandler('app/logs/mycommand.log', Logger::DEBUG));
//$logger->pushHandler(new FingersCrossedHandler(new StreamHandler('app/logs/mycommand.log', Logger::DEBUG), Logger::WARNING, 0, false)); // does not work. It prevents INFO messages from being logged
于 2012-09-19T14:49:14.967 回答