配置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();
}