仅将调试级别消息记录到symfony 1.4中的文件

时间:2011-09-30 11:22:43

标签: debugging logging symfony1 production

我的大部分应用程序日志记录都是在调试级别完成的,因为在sf 1.4中它并没有被symfony本身使用,这使我很容易看到我感兴趣的消息使用类似的东西:

tail -f log/frontend_dev.php | grep "\[debug\]"

这在开发环境中非常棒,而我坐在那里看着滚动过去,但我现在想在生产环境中仅记录 这些调试消息。

如果我将生产日志的日志级别设置为调试,那么显然我会将所有内容都包括在内,包括调试级别,这是太多的数据。

是否可以编写一个只记录[debug]消息的记录器,而不是其他内容?

1 个答案:

答案 0 :(得分:2)

当然可以 - 您可以扩展sfFileLogger并覆盖log($message, $priority)函数(sfFileLogger继承自sfLogger类)。

...
public function log($message, $priority = self::DEBUG)
{
  if ($this->getLogLevel() != $priority)
  {
    return false;
  }

  return $this->doLog($message, $priority);
}
...

现在您必须在应用中配置日志记录以使用新的记录器类,配置位于app/<your app>/config/factories.yml

prod:
  logger:
    class:   sfAggregateLogger
    param:
      level:   DEBUG
      loggers:
        sf_file_debug:
          class: myDebugOnlyLoggerClass
          param:
            level: DEBUG
            file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log

此记录器将仅保存使用factories.yml中配置的相同优先级(且仅相同,不同或更高)记录的消息。