• log4j中isDebugEnabled(), log.isInfoEnabled()和log.isTraceEnabled的封装


    1. 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)函数还是出现字符串的拼接。
    3.正确的优化方法
    建议采用AOP来封装
  • 相关阅读:
    mysql timestamp自动更新 简单
    vim中执行shell命令小结 简单
    Memcached常用资料 简单
    linux bash的命令行操作 简单
    如何调研 简单
    Linux 任务 jobs 简单
    shell相关命令效率 简单
    shell命令学习 简单
    线段树 区间更新(hdu1698) 区间合并(poj3667)
    hdu 1166 敌兵布阵 (树状数组)
  • 原文地址:https://www.cnblogs.com/wnlja/p/3912877.html
Copyright © 2020-2023  润新知