日志信息不在控制台上打印
问题描述:
在我的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级别。
所以,如果级别设置到什么位置发生了:
- DEBUG:你会看到的消息,是因为DEBUG包括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