自定義日誌輸出類log4j
阿新 • • 發佈:2019-01-10
以下是我自己寫的一個日誌類,寫這個類的初衷是為了規範專案組各個組員的日誌輸出格式規範,為以後日誌檢視分析提供方便,在程式碼生成器里加入這個日誌類的引用,這樣就可以很好的避免組員自己直接呼叫原生的日誌框架。在這裡貼出了一是為了自己做備份,二也是讓大家看看是不是有哪裡寫的不好可以改進下,如果不喜歡千萬別噴,程式設計師很膽小的,謝謝。
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;
}
}