log4j+slf4j+HandlerExceptionResolver 日志系统
来源:互联网 发布:php过滤敏感词的例子 编辑:程序博客网 时间:2024/06/06 04:36
1、log4j + slf4j
(1)引入jar包,maven
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.0</version></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.0</version></dependency><dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>
(2)配置log4j.properties,并引用。截取部分配置
如果改文件处理src目录下,则无需单独引用;如果不是,可以再web.xml进行引用
请参考https://github.com/GraduationTeam/log2/blob/master/src/main/resources/log4j.properties
log4j.logger.errorList = DEBUG,errorListlog4j.appender.errorList = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.errorList.Threshold = DEBUGlog4j.appender.errorList.File = ${catalina.home}/logs_dygk/gkweb/errorList.loglog4j.appender.errorList.Append = truelog4j.appender.errorList.layout=org.apache.log4j.PatternLayoutlog4j.appender.errorList.layout.ConversionPattern=[ %p ] - %-d{yyyy-MM-dd HH:mm:ss} %m%nlog4j.appender.errorList.encoding=UTF-8log4j.additivity.errorList = false
(3)日志工具类,截取部分代码
【思想:错误日志分成列表+详情】
可以参考https://github.com/GraduationTeam/log2/blob/master/src/main/java/com/util/LogUtils.java
import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class LogUtils { public static Logger getErrorListLogger(){ return LoggerFactory.getLogger("errorList"); } public static Logger getErrorDetailLogger(){ return LoggerFactory.getLogger("errorDetail"); } public static void printLog(Exception ex, HttpServletRequest request){ printLog_logType_(ex, request, "info", getLocalInfo()); } private static void printLog_logType_(Exception ex, HttpServletRequest request, String logType, String localInfo){ String uuid = UUID.randomUUID().toString().replace("-", "");//通过uuid使得errorList和errorDetail进行关联 getErrorListInfo_(ex, request, null, uuid, logType, localInfo); getErrorDetailInfo_(ex, request, uuid, logType, localInfo); } private static void getErrorListInfo_(Exception ex, HttpServletRequest request, String message, String uuid, String logType, String localInfo){ message = getMessage(ex, message); if(StringUtils.isNotBlank(logType)){ logType = logType.toLowerCase(); switch(logType){ case "debug": getErrorList_DebugType(ex, request, message, localInfo, uuid); break; case "info": getErrorList_InfoType(ex, request, message, localInfo, uuid); break; case "warn": getErrorList_WarnType(ex, request, message, localInfo, uuid); break; case "error": getErrorList_ErrorType(ex, request, message, localInfo, uuid); break; default: getErrorList_InfoType(ex, request, message, localInfo, uuid); break; } }else if(isErrorTypePrint(request)){ getErrorList_ErrorType(ex, request, message, localInfo, uuid); }else{ getErrorList_InfoType(ex, request, message, localInfo, uuid); } } private static void getErrorList_InfoType(Exception ex, HttpServletRequest request, String message, String localInfo, String uuid){ LogUtils.getErrorListLogger().info("[ {} ] -- [uuid:{}] url:{} ; params:{}; error: {}: {}", localInfo, uuid, request.getRequestURI(), getParamsByRequest(request), ex.getClass(), message); } public static String getLocalInfo(Integer statckTrace){ Date beforDate = new Date(); StackTraceElement ste = Thread.currentThread().getStackTrace()[statckTrace]; String className = ste.getClassName(); String methodName = ste.getMethodName(); int lineNumber = ste.getLineNumber(); return StringUtil.spliceStr(className, ".", methodName, "(", lineNumber, "); ", "consumTimes:", new Date().getTime() - beforDate.getTime(), "ms"); }}
(4)打印日志,在try-catch中引用等
2、捕捉抛出的异常
实现 HandlerExceptionResolver 接口,重写resolveException 进行异常处理
代码块如下:
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerExceptionResolver;import org.springframework.web.servlet.ModelAndView;/** * 捕捉抛出的异常 * * @author Administrator */public class CustomHandlerExceptionResolver implements HandlerExceptionResolver{ @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { LogUtils.printLog(ex, request); return new ModelAndView("404"); }}
阅读全文
0 0
- log4j+slf4j+HandlerExceptionResolver 日志系统
- log4j+slf4j日志系统
- 【日志系统】SLF4j&Log4j
- log4j+slf4j日志管理系统
- java日志系统-- slf4j + log4j
- 日志系统SLF4J 与log4J
- slf4j 与 log4j等日志系统
- slf4j结合log4j配置日志系统
- slf4j结合log4j配置日志系统
- 日志系统jar包:slf4j-api, slf4j-log4j12以及log4j
- 日志系统jar包:slf4j-api, slf4j-log4j12以及log4j
- SLF4J+Log4j 日志配置
- 折腾 slf4j+log4j 日志
- Java日志 Log4j+slf4j使用
- SLF4J+ Log4j 的日志组合
- slf4j 与log4j 日志管理
- slf4j 与log4j 日志管理
- log4j 和 slf4j 日志框架
- 除了选对主机,网站内容和用户体验更为重要
- EJB到底是什么
- git cherry-pick使用小结
- Android中自定义Toast视图和修改显示位置
- Android基础之最新正则表达式
- log4j+slf4j+HandlerExceptionResolver 日志系统
- Java实现对图的广度优先搜索
- 安卓学习Blog整理
- js和php方式,科学计数法转换成普通数
- ubuntu ceph 块 命令操作
- 输出字符奇数位置的字符串
- 高斯函数以及在图像处理中的应用总结
- 说说我了解的模拟电路与数字电路
- SQLServer FOR XML PATH使用案例