首页 > 其他 > 详细

log4j的终极封装

时间:2016-03-27 17:45:57      阅读:190      评论:0      收藏:0      [点我收藏+]

  本人在使用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;
    }
}
 

 

log4j的终极封装

原文:http://www.cnblogs.com/yichenlei/p/5326040.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!