2012-04-26 146 views
1

在我的Struts項目中,我使用了Loggers。我在調試模式下運行我的WSAD服務器。這裏下面的條件是令人滿意的,但它不是在控制檯上打印日誌信息。日誌信息不在控制檯上打印

if(count.intValue() > 1) 
{ 
    if (log.isDebugEnabled()) 
     log.info("many"); 

    return mapping.findForward("many"); 
} 

這裏我設置我的記錄器級別爲INFO。

+0

通過使用違反直覺的縮進意圖使讀者感到困惑嗎? – 2012-04-26 12:47:01

+0

它是如何違反直覺的。第二,如果條件也得到滿足。但log.info不在控制檯上打印。 – Mdhar9e 2012-04-26 12:53:49

+2

也許是因爲日誌級別設置爲'INFO',所以'isDebugEnabled'返回'false'? – Jesper 2012-04-26 12:57:11

回答

3

「下」日誌記錄級別包括所有的「高」的水平:

ERROR > WARN > INFO > DEBUG 
highest ------------ lowest 

這意味着,例如,當你級別設置爲DEBUG,你也將獲得INFO,WARN和錯誤信息;如果你把它設置爲INFO,您會看到錯誤,WARN和信息,但沒有調試消息等

看看這些行:

if (log.isDebugEnabled()) 
    log.info("many"); 

這到底是怎麼迷惑的是,你測試是否DEBUG級別處於活動狀態(使用isDebugEnabled),但您實際登錄INFO級別。

所以,如果級別設置到什麼位置發生了:

  • DEBUG:你會看到的消息,是因爲DEBUG包括INFO消息。
  • 信息:你會不是看到的消息,因爲isDebugEnabled返回false時,級別設置爲任何高於DEBUG。這意味着if中的聲明未執行,您看不到該消息。
0

正如加斯帕說,isDebugEnabled當日志級別至少設置爲DEBUG只會返回true,所以刪除支票或日誌級別設置爲DEBUGDEBUG的等級包括INFO,但是INFO不包括DEBUG