2012-04-26 129 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

相关问题