0

我在这样的服务中使用 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');
}

我想按日志级别检索记录。我怎样才能做到这一点 ?

谢谢。

4

1 回答 1

0

我不需要解析日志,我只想知道是否有错误或警告。

我在我的控制器中添加了这个:

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 相同的结果...

所以,我不知道如何解析我的日志......如果你有想法......

谢谢。

于 2015-11-24T08:48:57.507 回答