在我的Struts項目中,我使用了Loggers。我在調試模式下運行我的WSAD服務器。這裏下面的條件是令人滿意的,但它不是在控制檯上打印日誌信息。日誌信息不在控制檯上打印
if(count.intValue() > 1)
{
if (log.isDebugEnabled())
log.info("many");
return mapping.findForward("many");
}
這裏我設置我的記錄器級別爲INFO。
在我的Struts項目中,我使用了Loggers。我在調試模式下運行我的WSAD服務器。這裏下面的條件是令人滿意的,但它不是在控制檯上打印日誌信息。日誌信息不在控制檯上打印
if(count.intValue() > 1)
{
if (log.isDebugEnabled())
log.info("many");
return mapping.findForward("many");
}
這裏我設置我的記錄器級別爲INFO。
「下」日誌記錄級別包括所有的「高」的水平:
ERROR > WARN > INFO > DEBUG
highest ------------ lowest
這意味着,例如,當你級別設置爲DEBUG,你也將獲得INFO,WARN和錯誤信息;如果你把它設置爲INFO,您會看到錯誤,WARN和信息,但沒有調試消息等
看看這些行:
if (log.isDebugEnabled())
log.info("many");
這到底是怎麼迷惑的是,你測試是否DEBUG級別處於活動狀態(使用isDebugEnabled
),但您實際登錄INFO級別。
所以,如果級別設置到什麼位置發生了:
isDebugEnabled
返回false
時,級別設置爲任何高於DEBUG。這意味着if
中的聲明未執行,您看不到該消息。正如加斯帕說,isDebugEnabled
當日志級別至少設置爲DEBUG
只會返回true,所以刪除支票或日誌級別設置爲DEBUG
。 DEBUG
的等級包括INFO
,但是INFO
不包括DEBUG
。
通過使用違反直覺的縮進意圖使讀者感到困惑嗎? – 2012-04-26 12:47:01
它是如何違反直覺的。第二,如果條件也得到滿足。但log.info不在控制檯上打印。 – Mdhar9e 2012-04-26 12:53:49
也許是因爲日誌級別設置爲'INFO',所以'isDebugEnabled'返回'false'? – Jesper 2012-04-26 12:57:11