为什么有必要在JBoss中使用isTraceEnabled()函数?

时间:2012-03-01 16:32:04

标签: jboss log4j logging

我正在使用org.jboss.logging.Logger类,似乎遇到了一种不协调。当我出现错误或警告时,我只需使用logger.error("error message")logger.warn("warning message"),它将根据jboss-log4j.xml文件中的设置显示。

但是,根据现有的jboss代码this discussionthis link,当使用跟踪时,您必须首先确定是否使用logger.isTraceEnabled()启用了跟踪。为什么看起来我必须单独追踪这个?

1 个答案:

答案 0 :(得分:10)

你没有“必须”。没有它,它会正常工作。但是,TRACE级别的日志记录往往是大量冗长的,并且可能占用很大比例的CPU时间,即使它最终没有实际记录到文件中。通过对日志记录语句进行if检查,可以避免这种开销。

我已经看到其他优质代码库对DEBUG和INFO级别日志记录也是如此,所以它不仅限于TRACE。

请参阅log4j manual relating to peformance

部分