【问题标题】:Logging only debug level messages to file in symfony 1.4在 symfony 1.4 中仅将调试级别的消息记录到文件中
【发布时间】:2011-09-30 11:22:42
【问题描述】:

我的大部分应用程序日志记录都是在调试级别完成的,因为在 sf 1.4 中它不被 symfony 本身使用,这样可以很容易地看到我感兴趣的消息,例如:

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

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

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

是否可以编写一个只记录 [调试] 消息而没有其他内容的记录器?

【问题讨论】:

    标签: debugging logging symfony1 production


    【解决方案1】:

    当然有可能——您可以扩展 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 中配置的相同优先级(并且仅相同、不同或更高)记录的消息。

    【讨论】:

    • 这里有一个小错字,您可能希望为该页面的未来访问者修复它 - 它需要是 != 而不是 == 但除此之外,这正是我所需要的,而不是你。
    • 好的,我写的很匆忙,没有正确测试代码-现在应该可以了,谢谢!
    猜你喜欢
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2012-07-29
    • 2011-11-10
    相关资源
    最近更新 更多