日志信息不在控制台上打印

时间:2012-04-26 12:42:58

标签: java logging

在我的Struts项目中,我正在使用Loggers。我在调试模式下运行我的WSAD服务器。这里下面的条件令人满意,但它不是在控制台中打印日志信息。

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

    return mapping.findForward("many");
}

这里我将记录器级别设置为INFO。

2 个答案:

答案 0 :(得分:5)

“较低”的日志记录级别包括所有“更高”级别:

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

这意味着,例如,当您将级别设置为DEBUG时,您还将获得INFO,WARN和ERROR消息;如果将其设置为INFO,您将看到ERROR,WARN和INFO,但不会看到DEBUG消息等。

看看以下几行:

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

这里令人困惑的是,您测试DEBUG级别是否处于活动状态(使用isDebugEnabled),但您实际登录的是INFO级别。

所以,如果级别设置为:

,会发生什么
  • DEBUG:你会看到这条消息,因为DEBUG包含INFO消息。
  • 信息:您将看到该消息,因为isDebugEnabled在级别设置为高于DEBUG的任何值时返回false。这意味着if内的语句未执行,您也看不到该消息。

答案 1 :(得分:0)

正如Jesper所说,isDebugEnabled只会在日志级别至少设置为DEBUG时返回true,因此请删除该检查或将日志级别设置为DEBUGDEBUG级别包含INFO,但INFO不包含DEBUG