log4j的终极封装


  本人在使用log4j的时候最讨厌的就是各种new logger对象了。由于出于偷懒的目的封装了以下这个Log类。今天发布出来给大家分享一下。

  共8个日志输出方法,具体如下:

Log.debug("hello log4j"); //debug输出
Log.debug("自定义Tag","hello log4j"); //debug输出,带自定义tag
Log.info("hello info"); //info输出
Log.info("自定义Tag","hello info"); //info输出,带自定义tag
Log.warn("hello warn"); //warn输出
Log.warn("自定义Tag","hello warn"); //warn输出,带自定义tag
Log.error("hello error"); //error输出
Log.error("自定义Tag","hello error"); //error输出,带自定义tag

以下是封装类的源代码:

package com.ycl.core.common;

import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;

public class Log {
    
    private static Map<String,Logger> loggerMap = new HashMap<String,Logger>();

    public static void main(String[] args) throws ClassNotFoundException {
        Log.error("自定义LOG","sss444444");
    }
    
    public static void debug(Object message){
        String className = getClassName();
        Logger log = getLogger(className);
        if(log.isDebugEnabled()){
            log.debug(message);
        }
    }
    
    public static void debug(String tag, Object message){
        String className = getClassName();
        Logger log = getLogger(className);
        if(log.isDebugEnabled()){
            log.debug(new StringBuffer().append("【").append(tag).append("】").append(message).toString());
        }
    }

    public static void info(Object message){
        String className = getClassName();
        Logger log = getLogger(className);
        if(log.isInfoEnabled()){
            log.info(message);
        }
    }
    
    public static void info(String tag, Object message){
        String className = getClassName();
        Logger log = getLogger(className);
        if(log.isInfoEnabled()){
            log.info(new StringBuffer().append("【").append(tag).append("】").append(message).toString());
        }
    }
    
    public static void warn(Object message){
        String className = getClassName();
        Logger log = getLogger(className);
        log.warn(message);
    }
    
    public static void warn(String tag, Object message){
        String className = getClassName();
        Logger log = getLogger(className);
        log.warn(new StringBuffer().append("【").append(tag).append("】").append(message).toString());
    }
    
    public static void error(Object message){
        String className = getClassName();
        Logger log = getLogger(className);
        log.error(message);
    }
    
    public static void error(String tag, Object message){
        String className = getClassName();
        Logger log = getLogger(className);
        log.error(new StringBuffer().append("【").append(tag).append("】").append(message).toString());
    }
    
    /**
     * 获取最开始的调用者所在类
     * @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;
    }
}
 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM