最近做项目时,出现了一个bug,环境为was,出现一次请求,返回多次处理结果,最终查询原因为was配置的超时转发(server1超时自动转发server2,3,4..)引起的.
为了快速定位问题的根源,所以希望能把log4j的输入写入到数据库中,因此才有了本此的文章。
1.创建mysql数据库log4j,数据表ibs_log
02 | CREATE DATABASE `log4j`; |
04 | CREATE TABLE `ibs_log` ( |
05 | `log_id` int (10) NOT NULL AUTO_INCREMENT, |
06 | `log_date` datetime NOT NULL COMMENT '日期' , |
07 | `log_file` varchar (255) DEFAULT NULL COMMENT '文件名' , |
08 | `log_line` varchar (255) DEFAULT NULL COMMENT '行号' , |
09 | `log_thread` varchar (255) DEFAULT NULL COMMENT '线程' , |
10 | `log_level` varchar (255) DEFAULT NULL COMMENT 'Log级别 info warndebug error等' , |
11 | `log_message` varchar (2048) DEFAULT NULL COMMENT 'Log信息' , |
12 | PRIMARY KEY (`log_id`,`log_date`), |
13 | KEY `INDEX_LOG_DATE` (`log_date`) USING BTREE |
14 | ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 |
2.新建一个java project工程。

01 | log4j.rootLogger=INFO,appender1,appender2,appender3 |
02 | log4j.logger.org.springframework=ERROR |
03 | log4j.appender.appender1=org.apache.log4j.ConsoleAppender |
04 | log4j.appender.appender1.layout=org.apache.log4j.PatternLayout |
05 | log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n |
06 | log4j.appender.appender2=org.apache.log4j.FileAppender |
07 | log4j.appender.appender2.File=log/IceColdMonitor.log |
08 | log4j.appender.appender2.layout=org.apache.log4j.PatternLayout |
09 | log4j.appender.appender2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n |
11 | log4j.appender.appender3=org.apache.log4j.jdbc.JDBCAppender |
12 | log4j.appender.appender3.driver=com.mysql.jdbc.Driver |
13 | log4j.appender.appender3.URL=jdbc:mysql://127.0.0.1:3306/log4j |
14 | log4j.appender.appender3.user=root |
15 | log4j.appender.appender3.password=root |
16 | log4j.appender.appender3.sql=INSERT INTO ibs_log (log_date,log_file,log_line,log_thread,log_level,log_message) VALUES ('%d{yyyy-MM-dd hh:mm:ss}','%c','%l','%t','%p','%m') |
- 编写测试类
01 | package com.log4j.test; |
02 | import org.apache.log4j.Logger; |
09 | public static void main(String[] args) { |
10 | Logger logger = Logger.getLogger(Test. class ); |
11 | logger.info( "test logger info" ); |
12 | logger.debug( "test logger debug" ); |
13 | logger.error( "test logger error" ); |
14 | logger.fatal( "test logger fatal" ); |
项目截图:

运行截图:

