自定义日志输出类log4j

来源:互联网 发布:知乎怎么查看我的收藏 编辑:程序博客网 时间:2024/06/08 12:37

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

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;    }}
原创粉丝点击