何时使用log4j的isDebugEnabled属性来进行日志记录?
来源:互联网 发布:淘宝上开网店多少钱 编辑:程序博客网 时间:2024/05/16 04:58
以前知道这个问题,但没有去了解它,这次看到一个网页,说明了事实的真相,所以转载过来。
===============================================================
我经常见到这个问题,到底使不使用idDebugEnabled属性。这个问题经常被争论,而焦点往往是性能。
答案很简单。既然有这个属性,当然是拿来使用的。但是使用的时候需要注意。
例如,在我的代码中,我如下使用。
Java代码
- log.debug("I am there");
这个例子是一个好的实践。
然而如果我按照如下的方式来使用,我觉得就是不必要的了。
Java代码
- // Not good practise
- if (log.isDebugEnabled()){
- log.debug("I am there");
- }
那么是为什么呢?这是因为类Category中的debug方法(由Log4j库的Logger类继承)已经检查了日志中的模式(即当前的日志级别)。org.apache.log4j.Category类中debug的代码如下:
Java代码
- public void debug(Object message) {
- if(repository.isDisabled(Level.DEBUG_INT))
- return;
- if(Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel())) {
- forcedLog(FQCN, Level.DEBUG, message, null);
- }
- }
因此上面的例子中,我们可以不使用它来判断。那么什么时候需要使用isDebugEnabled属性呢?
例如,你有一个很 长的参数要在debug模式下输出:
Java代码
- // Bad Practise
- log.debug("XML "+Tree.getXMLText());
在这样的情况下,可以清楚的说,不要使用它。如果Tree.getXMLText方法从App中获取出来,但是没有使用的话,这样对性能会有很大的影响。因此,应该按照如下的方式来使用:
Java代码
- // Good Practise
- if (log.isDebugEnabled()){
- log.debug("XML "+Tree.getXMLText());
- }
因此,在上面的例子中,使用log.isDebugEnabled()可以保证性能优化。
- 何时使用log4j的isDebugEnabled属性来进行日志记录?
- 使用Log4j进行日志记录
- 使用log4j进行日志记录
- 使用log4j进行日志记录
- tomcat7 使用log4j进行日志记录
- java使用log4j进行日志记录
- 日志记录---Log4j的使用
- Log4j的isdebugEnabled的作用 从isdebugEnabled使用 思考项目中代码的效率
- 为什么要使用log4j isDebugEnabled
- log4j的isDebugEnabled的作用
- Log4j的isdebugEnabled的作用
- Log4j的isdebugEnabled的作用
- Log4j进行日志记录Demo
- 使用log4j记录日志
- 使用log4j记录日志
- 使用log4j记录日志
- 使用Log4j记录日志
- 使用log4j记录日志
- asp.net 存储过程执行实例
- [Asp.Net]实现提取数据到table中 不用服务器控件
- 关于动态静态化页面
- vb.net 连接SQL数据库
- audio id
- 何时使用log4j的isDebugEnabled属性来进行日志记录?
- PL/SQL DEVELOPER 绿色版的设置(allroundautomations.com邮件指导)
- Comparable接口和Comparator接口
- GCC-3.4.6源代码学习笔记(29)
- VRRP工作过程
- 接口
- 起点
- 欢迎大家进入编程俱乐部!http://tieba.baidu.com/club/7612369
- sql 的随机函数newID()和RAND()