对log4j的简单封装

来源:互联网 发布:smartgit linux 安装 编辑:程序博客网 时间:2024/06/05 13:22
log4j使用起来有点麻烦,在不同的类里面都得创建一个实例,繁琐之余还会浪费内存,对于日后要更换其他的第三方日志jar工作量也很大,所以对其进行简单的封装,直接调用静态方法即可打印日志。
package com.core.utils;import java.util.HashMap;import java.util.Map;import org.apache.log4j.Logger;public class LogUtils { private static Map<String,Logger> loggerMap = new HashMap<String,Logger>();        public static void debug(Object message){        String className = getClassName();        Logger log = getLogger(className);        if(log.isDebugEnabled()){            log.debug(message);        }    }            public static void info(Object message){        String className = getClassName();        Logger log = getLogger(className);        if(log.isInfoEnabled()){            log.info(message);        }    }            public static void warn(Object message){        String className = getClassName();        Logger log = getLogger(className);        log.warn(message);    }            public static void error(Object message){        String className = getClassName();        Logger log = getLogger(className);        log.error(message);    }            /**     * 获取最开始的调用者所在类     * @return     */    private static String getClassName(){        Throwable th = new Throwable();        StackTraceElement[] stes = th.getStackTrace();        StackTraceElement ste = stes[2];        return ste.getClassName();    }    /**     * 根据类名获得logger对象     * @param className     * @return     */    private static Logger getLogger(String className){        Logger log = null;        if(loggerMap.containsKey(className)){            log = loggerMap.get(className);        }else{            try {                log = Logger.getLogger(Class.forName(className));                loggerMap.put(className, log);            } catch (ClassNotFoundException e) {                e.printStackTrace();            }        }        return log;    }}


 
原创粉丝点击