2011-09-30 58 views
0

我的大多数应用程序的日志记录是在调试级别完成,因为在SF 1.4它不使用symfony的本身,这使得它很容易看到的只是这些消息我感兴趣的使用是这样的:只记录调试级消息在symfony中提交1.4

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

这是在开发环境伟大,而我坐在那儿看着它滚动过去,但我现在想在生产环境中登录这些调试消息。

如果我设置生产日志调试日志级别,那么显然我去拿都记录下来并包括调试级别,这是太多的数据。

是否可以写一个记录器,这将只是记录[调试]消息,并没有别的?

回答

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

+0

那里面有一个小错字,你可能要修复的这个页面的后续访问者 - 它必须是'='而不是'==',但比这正是我需要的,比你等。 –

+0

好的,我写得很急,没有正确地测试代码 - 现在应该没问题,thx! – akloboucnik