以下是我自己寫的一個日志類,寫這個類的初衷是為了規範項目組各個組員的日志輸出格式規範,為以後日志檢視分析提供友善,在代碼生成器裡加入這個日志類的引用,這樣就可以很好的避免組員自己直接調用原生的日志架構。在這裡貼出了一是為了自己做備份,二也是讓大家看看是不是有哪裡寫的不好可以改進下,如果不喜歡千萬别噴,程式員很膽小的,謝謝。
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;
}
}