天天看点

自定义日志输出类log4j

以下是我自己写的一个日志类,写这个类的初衷是为了规范项目组各个组员的日志输出格式规范,为以后日志查看分析提供方便,在代码生成器里加入这个日志类的引用,这样就可以很好的避免组员自己直接调用原生的日志框架。在这里贴出了一是为了自己做备份,二也是让大家看看是不是有哪里写的不好可以改进下,如果不喜欢千万别喷,程序员很胆小的,谢谢。

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * 
 * @author 小锋
 *
 */
public class MyLogger {

    private Logger LOGGER;

    // 多线程使用ConcurrentMap
    private static ConcurrentMap<Class<?>, MyLogger> conMap = new  ConcurrentHashMap<Class<?>, MyLogger>();

    public static MyLogger getMyLogger(Class<?> clazz){
        if(conMap.containsKey(clazz)){
            return conMap.get(clazz);
        }
        synchronized(MyLogger.class){
            new MyLogger().initMyLogger(clazz);
        }
        return conMap.get(clazz);
    }

    /**
     * 创建MyLogger
     * @param clazz
     * @return
     */
    public void initMyLogger(Class<?> clazz){
        synchronized(MyLogger.class){
            MyLogger log = new MyLogger();
            log.setLOGGER(LoggerFactory.getLogger(clazz));
            conMap.put(clazz, log);
        }
    }

    //***************************************//
    //***          日志操作方法自行添加      ***//                                                                
    //**************************************//

    /**
     * 普通info日志
     *
     * @param content 日志内容
     */
    @Deprecated
    public void info(String content) {
        LOGGER.info(content);
    }


    /**
     * 普通error日志
     *
     * @param content 日志描述内容
     * @param t       -异常信息
     */
    @Deprecated
    public void error(String content, Throwable t) {
        LOGGER.error(content, t);
    }
    @Deprecated
    public void error(String content) {
        LOGGER.error(content);
    }




    /**
     * 记录请求日志
     *
     * @param requestId      请求标识
     * @param requestDesc    调用描述
     * @param requestContent 请求内容
     */
    public void info(String requestId, String requestDesc, String requestContent) {
        LOGGER.info(getContent(requestId, requestDesc, requestContent));
    }


    /**
     * 记录请求日志
     *
     * @param requestId      请求标识
     * @param requestDesc    调用描述
     * @param requestContent 请求内容
     */
    public void requestLog(String requestId, String requestDesc, Object requestContent) {
        LOGGER.info("Request -> " + getContent(requestId, requestDesc, requestContent));
    }
    public void requestLog(String requestId, String requestDesc) {
        requestLog(requestId, requestDesc, requestDesc);
    }

    /**
     * 记录返回日志
     *
     * @param requestId      请求标识
     * @param requestDesc    调用描述
     * @param requestContent 请求内容
     */
    public void responseLog(String requestId, String requestDesc, String requestContent) {
        LOGGER.info("Response-> " + getContent(requestId, requestDesc, requestContent));
    }

    public void responseLog(String requestId, String requestDesc) {
        responseLog(requestId, requestDesc, requestDesc);
    }


    /**
     * 记录返回日志
     *
     * @param requestId      请求标识
     * @param requestDesc    调用描述
     * @param requestContent 请求内容
     * @param t              异常信息
     */
    public void error(String requestId, String requestDesc, String requestContent, Throwable t) {
        LOGGER.error("Exception->" + getContent(requestId, requestDesc, requestContent), t);
    }

    public void error(String requestId, String requestDesc, Throwable t) {
        error(requestId, requestDesc, requestDesc, t);
    }

    public void error(String requestId, String requestDesc) {
        LOGGER.error("Exception->" + getContent(requestId, requestDesc, requestDesc));
    }


    private String getContent(String requestId, String requestDesc, Object requestContent) {
        return "id=" + requestId + ", description=" + requestDesc + ", content=" + requestContent;
    }


    public Logger getLOGGER() {
        return LOGGER;
    }


    public void setLOGGER(Logger lOGGER) {
        LOGGER = lOGGER;
    }
}
           

继续阅读