关于log4j的配置文件log4j.properties在此不作描述,网上很多资料介绍它的。
这里直接给出代码和说明:
log4j.properties
log4j.rootLogger=DATABASE # 写入数据库 log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender log4j.appender.DATABASE.URL=jdbc:mysql://192.168.88.21:3306/e_book log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver log4j.appender.DATABASE.user=super log4j.appender.DATABASE.password=super # 本处设置为"ERROR"或以上级别在数据库存储 log4j.appender.DATABASE.Threshold=ERROR # 存储数据 log4j.appender.DATABASE.sql=INSERT INTO eb_error_log(Message) VALUES ('%d - [%t] %-5p %c:%L - %m%n') log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern=%d - [%t] %-5p %c:%L - %m%n
log4j 有一个类是Throwable,有个printStackTrace()方法,将异常信息(stackTrace)写入输出流,获取这个输出流,转换成String,调用log.error(String) 这样就把异常信息获取完整,存入库了.
在java中处理异常的时候,如下处理:
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
}catch (Exception e) {
String exceptionStack = "";
e.printStackTrace(pw);
exceptionStack = sw.toString();
log.error(exceptionStack);
}finally{
try {
pw.close();
sw.close();
} catch (IOException e) {
e.printStackTrace();
}
}