`

为什么要写 if (log.isDebugEnabled()) {}?

    博客分类:
  • java
阅读更多
在使用log4j,common-log这样的log框架时,发现很多代码中这样写
if   (log.isDebugEnabled())   {
          log.debug( "xxxx ");
}

我很奇怪,为什么要与log.isDebugEnabled()?既然log.debug()在没有指定输出级别为DEBUG时不会有输出,为什么还要在前面加一个isDebugEnabled()的判断?

为了效率,如果上述那个代码那么简单是没有必要的

但是如果这样
if   (log.isDebugEnabled())   {
          log.debug(buildFullString());
}

如果这个buildFullString效率不太高,那么如果直接写log.debug(buildFullString());的话

虽然它不会打印语句,但是buildFullString还是被执行了,这样就白费了功夫

所以加上isDebugEnabled就可以避免执行buildFullString了

这个方法一般用在认为buildFullString这个函数效率不太高的情况下



加不加if,效果相同,但是效率不同

在你的例子里,debug的参数就是一个string,所以没有太本质的差别

但是假如log.debug( "map= "   +   map)的话,在调用debug之前,必然需要调用map.toString(),而这个操作可能导致更多的大量字符串操作,最后,才能得到这个辛辛苦苦拼接出来的结果,作为参数传入debug(),结果,这个参数却不需要(一般在log方法入口就判断输出level)。
分享到:
评论

相关推荐

    带注释的Bootstrap.java

    private static final Log log = LogFactory.getLog(Bootstrap.class); /** * Daemon object used by main. */ private static Bootstrap daemon = null; private static final File catalinaBaseFile; ...

    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入门详解

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

    如何使用Log4j如何使用Log4j

    if (log.isDebugEnabled()) { log.debug("System property: " + System.getProperty("java.version")); } ``` 使用`isDebugEnabled()`方法判断当前Logger是否开启DEBUG级别,如果开启了,则调用`debug()`方法...

    log4j日志使用说明

    if (log.isDebugEnabled()) { log.debug("System ..."); } } } ``` #### 五、Log4j的高级特性 Log4j除了基本的日志记录功能外,还支持许多高级特性,比如: - **多语言接口**:不仅支持Java,还可以通过其他...

    log4j入门、详解.pdf

    if (logger.isDebugEnabled()) { logger.debug("Debug message"); } ``` 2. **性能优化**:尽管Log4j提供了丰富的配置选项,但在实际使用中也应注意性能问题。例如,频繁的日志输出可能会对系统的性能造成一定...

    log4j配置与使用方法

    - 为了减少性能开销,可以在代码中使用`if (log.isDebugEnabled()) { log.debug(); }`的方式来判断是否输出debug级别的日志。 3. **环境适应性**: - 对于不同的环境(如开发环境、测试环境、生产环境)可以采用...

    log4net网站项目应用实例

    为避免不必要的日志计算开销,可以在调用`log`方法前先检查当前日志级别是否允许输出,例如: ```csharp if (log.IsDebugEnabled) { log.Debug("Debug message"); } ``` ### 9. 扩展和自定义 log4net提供丰富的...

    LOG4J开发案例

    if (log.isDebugEnabled()) { log.debug("This is a debug message."); } ``` #### 四、案例实践 为了更好地理解Log4j的使用方法,我们可以通过一个具体的案例来进行分析。假设有一个简单的Web应用程序,我们...

    如何使用Log4j日志.rar

    通过在代码中使用`if (logger.isDebugEnabled()) {...}`,可以在运行时避免不必要的日志计算,因为如果日志级别高于DEBUG,这些代码将不会执行。 五、日志滚动和归档 Log4j的DailyRollingFileAppender允许每天生成...

    log4j配置详解 新手入门教程

    if (log.isDebugEnabled()) { log.debug("This is a debug message."); } ``` 这里通过`LogFactory.getLog(getClass())`获取当前类的Logger对象,并通过`isDebugEnabled()`方法判断当前Logger是否开启了DEBUG级别...

    Log4Net使用指南

    if (log.IsDebugEnabled) { log.Debug("Debug message"); } // 其他日志级别同理 } } ``` 总结来说,Log4Net是一个强大的日志记录框架,它提供了一套完整的解决方案,使.NET开发者能够方便地集成日志功能,...

    log4j 使用说明 很信息

    if (log.isDebugEnabled()) { log.debug("测试Log4j!"); } } } ``` 这段代码首先导入了必要的包,并创建了一个Log对象,然后使用`LogFactory.getLog()`方法获取一个Logger实例。接着通过`isDebugEnabled()`方法...

    log4j的配置祥解和使用说明

    if (log.isDebugEnabled()) { log.debug("System ...."); } ``` 7. **自定义配置**:开发者可以根据需求自定义日志输出的级别、格式和目的地。例如,增加一个新的Appender来发送日志到网络服务器,或者改变日志...

    log4j的用法

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

    JS中的log对象获取以及debug的写法介绍

    实例如下: 代码如下:var log = new Logger(‘***.js’)if (log.isDebugEnabled()) { log.debug(‘xxxxx’); }

    log4j简单教程 希望大家喜欢

    if (log.isDebugEnabled()) { log.debug("This is a debug message."); } ``` 这段代码首先通过`LogFactory.getLog()`方法获取一个与当前类相关的`Log`实例。之后,可以通过调用`log.debug()`方法记录一条DEBUG...

Global site tag (gtag.js) - Google Analytics