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