1. 程式人生 > >自定義日誌輸出類log4j

自定義日誌輸出類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; } }