捕获异常后用Log4j记录异常信息方法及工具类

来源:互联网 发布:淘宝怎么开直播卖东西 编辑:程序博客网 时间:2024/05/16 06:41

配置log4j的配置文件,即便是把等级调整到debug,当出现异常的时候,只有控制台能看到,log日志文件却没有任何记录。

以前没有可以去关注过这块,这次打框架,发现这对后期排查问题不是很友好。

后来才反应过来,信息需要手动记录,这才反应过来曾经写的都是logger,info(...)。

当然,记录信息也是这样。当然,写一个工具类会更方便,贼方便。

以下是找到的一个现成的工具类,贴出来

(关于工具类中使用的@Component、@Autowired、@PostConstruct 注解是我个人因需要记录信息入库而需要注入bean,具体下篇文章写,如不需要删除即可)


@Component
public class LogTool {
@Autowired private XxxMapper xxxMapper; public static LogTool logTool; @PostConstruct public void init() { logTool = this; } public static void info(Class logClass, Object e) { Logger logger = Logger.getLogger(logClass); if (e instanceof Exception) { logger.info(getException((Exception) e)); } else { logger.info(e.toString()); } } public static void warn(Class logClass, Object e) { Logger logger = Logger.getLogger(logClass); if (e instanceof Exception) { logger.warn(getException((Exception) e)); } else { logger.warn(e.toString()); } } public static void debug(Class logClass, Object e) { Logger logger = Logger.getLogger(logClass); if (e instanceof Exception) { logger.debug(getException((Exception) e)); } else { logger.debug(e.toString()); } } public static void error(Class logClass, Object e) { Logger logger = Logger.getLogger(logClass); String msg ; if (e instanceof Exception) { msg = getException((Exception) e); } else { msg = e.toString(); } logger.error(msg); } public static void fatal(Class logClass, Object e) { Logger logger = Logger.getLogger(logClass); if (e instanceof Exception) { logger.fatal(getException((Exception) e)); } else { logger.fatal(e.toString()); } } public static String getException(Exception e) { StackTraceElement[] ste = e.getStackTrace(); StringBuffer sb = new StringBuffer(); sb.append(e.getMessage() + " "); for (int i = 0; i < ste.length; i++) { sb.append(ste[i].toString() + " "); } return sb.toString(); }

原创粉丝点击