2015-11-23 2 views
0

я использую Монолог \ Logger в службе, как это:Как разобрать мои журналы в Symfony2 (Монолог 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'); 
} 

Я хотел бы получить записи по уровню моих журналов. Как я могу это сделать?

Спасибо.

+0

Вам нужно разобрать журналы? Это текстовые файлы. Просто возьмите их и проанализируйте. Уровень тоже есть. Вы можете grep для этого, если хотите. –

ответ

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; 
     } 
    } 
} 

Это хороший способ сделать? Спасибо.

[EDIT] У меня нет такого же результата с app.php и app_dev.php ...

Так что, я не знаю, как я могу разобрать мои журналы ... Если у вас есть идеи ...

Спасибо.

Смежные вопросы