2011-09-30 72 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