`
cunzhangok
  • 浏览: 67143 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

isDebugEnabled 、isInfoEnabled 为什么要使用

 
阅读更多
以前一直不明白为什么在输出日志前必须使用:
if (log.isDebugEnabled())???
在看下面的解释之前,我先说明下,对于打印的信息没有字符拼接或者对象(说白了没有tostring的方法调用),如果打印的信息是固定字符串的话,就加上面的判断和不加其实意义是一样的(更说白了,就是节省log.debug(***)中***部分向字符串的装换。下面是一位网友写的,他说明了比较纤细,我摘录了给大家看看


log4j中isDebugEnabled(), log.isInfoEnabled()和log.isTraceEnabled的封装
分类: Java语言2010-01-05 13:30 435人阅读 评论(0) 收藏 举报
log4j中log.isDebugEnabled(), log.isInfoEnabled()和log.isTraceEnabled()作用
项目在应用log4j打印Debug,Info和Trace级别的log时需要加上对应的三个方法进行过滤,代码如下:
if (log.isDebugEnabled()) {
    log.debug(" From: " + req.getFrom().toString() +
                  " To: " + req.getTo().toString() +
                  " CallId: " + req.getCallId() +
                  " msg:" + msg);
}
其作用是因为Debug,Info和Trace一般会打印比较详细的信息,而且打印的次数较多,如果我们不加log.isDebugEnabled()等
进行预先判断,当系统loglevel设置高于Debug或Info或Trace时,虽然系统不会答应出这些级别的日志,但是每次还是会拼接
参数字符串,影响系统的性能。
2.错误的优化方法
部分编码人员因为不了解机制,从代码复用性和简洁性而言定义如下函数来封装
    private void debug(String msg) {
        if (log.isDebugEnabled()) {
            log.debug(msg);
        }
}
其实这种封装方式是错误的,因为当系统中调用debug(msg)函数还是出现字符串的拼接。
分享到:
评论

相关推荐

    Log4net使用指南.doc

    - **日志级别检查**: 提供了一系列布尔属性(如 `isDebugEnabled`、`isInfoEnabled`等),用于检查当前Logger的日志级别设置。 **3.1.2 日志级别** Log4net定义了五个基本的日志级别:`DEBUG`, `INFO`, `WARN`, `...

    Log4Net 文件日志

    - 为了提高性能,Log4Net 提供了`IsDebugEnabled`、`IsInfoEnabled`等属性检查,只有当日志级别开启时才会执行日志记录操作,避免不必要的计算。 9. **线程安全**: - Log4Net 是线程安全的,可以在多线程环境中...

    log4net详细教程

    - **日志输出控制**:为了在运行时控制日志输出,log4net提供了布尔属性如`IsDebugEnabled`、`IsInfoEnabled`等,用于检查当前日志级别的启用状态。 2. **Repository**:Repository充当了log4net的容器,用于维护...

    log4j入门详解

    - **为什么使用logger之前要判断日志输入级别?** 在调用`logger.debug`、`logger.info`等方法前,可以先通过`logger.isDebugEnabled()`、`logger.isInfoEnabled()`等方法来检查当前的日志级别是否允许输出该级别...

    asp.net log4net的使用方法

    log.IsDebugEnabled) { SetConfig(); } log.Debug(Message); } private static void SetConfig() { object o = ConfigurationManager.GetSection("log4net"); log4net.Config.XmlConfigurator.Configure(o...

    log4j详解配置说明

    if (log.isDebugEnabled()) { log.debug("Debug message"); } if (log.isInfoEnabled()) { log.info("Info message"); } if (log.isWarnEnabled()) { log.warn("Warning message"); } if (log....

    log4j的用法

    if (logger.isDebugEnabled()) { logger.debug("这是一个调试信息"); } if (logger.isInfoEnabled()) { logger.info("这是一条信息"); } if (logger.isWarnEnabled()) { logger.warn("这是一个警告信息"); } if ...

    log4j 源代码 log4j

    3. Logger工作原理:在`org.apache.log4j.Logger`类中,每个logger都有一个优先级,通过`isDebugEnabled()`、`isInfoEnabled()`等方法检查当前日志级别是否允许输出特定级别的日志。 4. 配置解析:`org.apache.log4...

Global site tag (gtag.js) - Google Analytics