【问题标题】:Get LogLevel for current class/bean获取当前类/bean 的 LogLevel
【发布时间】:2010-12-07 14:08:07
【问题描述】:

从我的班级登录时,我使用以下方法:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;    
...
private static Log log = LogFactory.getLog(MyClass.class);
...
log.debug("...");

我注意到,无论应用什么日志级别,所有日志语句都会始终执行。我不想在不需要时执行与调试相关的语句(这里是性能问题)。

所以我正在寻找这样的东西:

if (LogLevel == debug) {
   log.debug("...");
   ...
}

如何获取当前用于该类的 LogLevel?

【问题讨论】:

    标签: java logging jakarta-ee apache-commons java.util.logging


    【解决方案1】:

    commons logging 包中的每个 Log 实例都可以告诉您是否启用了特定级别。使用此代码:

    if ( log.isDebugEnabled() ) 
    {
        // Debug log statements
    }
    

    查看Commons Logging JavaDoc了解更多信息。

    【讨论】:

    • 谢谢,正是我想要的。不确定我怎么会在 API 中错过它。
    【解决方案2】:

    使用slf4j 作为日志框架的日志外观,因为它通过使用parametrized logging 解决了您提到的问题以提高性能。

    如果您想要更快的日志记录框架,请使用Logback

    【讨论】:

    • 我同意,我更喜欢参数化日志记录而不是逻辑检查。
    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 2021-06-07
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2011-09-10
    • 1970-01-01
    相关资源
    最近更新 更多