我在这样的服务中使用Monolog \ Logger:
<service id="my_service" class="Acme\DemoBundle\Service\MyService">
<tag name="monolog.logger" channel="mychannel" />
<argument type="service" id="logger" />
<argument type="service" ... />
</service>
在服务中:
use Monolog\Logger;
class MyService{
private $logger;
public function __construct(Logger $logger, ...) {
$this->logger = $logger;
...
}
}
我想在我的控制器中使用与我的服务相同的通道,因此,在我的控制器中,我有:
private function getLogger() {
return $this->get('monolog.logger.mychannel');
}
我想按日志级别检索记录。我怎样才能做到这一点 ?
谢谢。
我不需要解析日志,我只想知道是否有错误或警告。
我在控制器中添加了这个:
private function hasLevelErrorHandler($type = "error") {
$handlers = $this->getLoggger()->getHandlers();
$records = $handlers[0]->getRecords();
if( $type == "error" ) {
$levels = array(Logger::ERROR, Logger::CRITICAL, Logger::ALERT, Logger::EMERGENCY);
} else {
$levels = array(Logger::WARNING);
}
foreach( $records as $record ) {
if( in_array($record['level'], $levels) ) {
return true;
}
}
}
这是一个好方法吗?谢谢。
[编辑]我与app.php和app_dev.php的结果不一样......
所以,我不知道如何解析我的日志...如果你有想法......
谢谢。