zoukankan      html  css  js  c++  java
  • Log4j详细介绍(三)Log4j的优化

      Log4j内部使用了大量的优化,缓存工作,使输出时对服务器的压力,消耗的时间,资源等都达到最小。例如:

    1 log.debug("debug信息");
    2 log.warn("warn信息");

         这两句日志可能被记录到日志文件中,但是写的过程不同于常规的打开文件,写文件,关闭文件等流程,频繁地打开文件,关闭文件需要消耗大量资源。Log4j只有初始化时候打开文件,并保持对文件的写控制,知道系统结束的时候才关闭文件。这样就使I/O次数达到最小,提高了效率。
      而当输出级别为ERROR时,log.debug(),log.waring()方法会因为输出级别小雨ERROR而直接返回,因此不会消耗太多的资源。debug()内部实现如下:

    1 public void debug(Object message){
    2       if (this.repository.isDisabled(10000))
    3           return;
    4       if (Level.DEBUG.isGreaterOrEqual(getEffectiveLevel()))
    5           forcedLog(FQCN, Level.DEBUG, message, null);
    6         }
    7 }

         虽然设置为ERROR时debug()会直接返回,但是下面的代码仍然会消耗额外的时间,原因是在执行debug()前,需要先将字符串进行连接。

    1 log.debug("开始计算  "+i+" * "+j+" 次 运算");

    如果想要避免这种消耗,最好使用isXxxEnable()或者isEnableFor()判断一下,例如:

    1 if(log.isDebugEnabled())//如果debug级别可用
    2     log.debug("开始计算  "+i+" * "+j+" 次 运算");//连接字符串,输出
    3 if(log.isEnabledFor(Priority.WARN))//或者,如果warn可用
    4     log.debug("开始计算  "+i+" * "+j+" 次 运算");// 连接字符串输出
  • 相关阅读:
    两种方法实现超出省略号效果
    CSS中定义优先权
    网页设计中字体设置详解
    JavaScript的方法和技巧
    手把手教你使用Gene6FTP远程管理
    用Zend Encoder加密PHP文件和PHP 优化配置
    JavaScript的方法和技巧
    SQL Server 2000订阅与发布的具体操作
    企业级邮件服务软件推荐
    用Zend Encoder加密PHP文件和PHP 优化配置
  • 原文地址:https://www.cnblogs.com/ArtsCrafts/p/log4j3.html
Copyright © 2011-2022 走看看