log4j提供了多种Appender,通过这些Appender可以把log4j产生的日志写到数据库中,把所用的日志集中起来管理,能够进行日志的分析和集中监控,提升系统的可维护性和系统的可用性,下面是我利用derby嵌入式数据库,写入数据库的配置:
在log4j文件中,增加关于JDBCAppender的配置:
- < appender name = "db" class = "org.apache.log4j.jdbc.JDBCAppender" >
- < param name = "driver" value = "org.apache.derby.jdbc.EmbeddedDriver" />
- < param name = "URL" value = "jdbc:derby:logdb;create=true" />
- < param name = "user" value = "" />
- < param name = "password" value = "" />
- < param name = "sql" value = "INSERT INTO LOG4J (Date, Logger, Priority, Thread, Message) VALUES ('%d', '%c', '%p', '%t', '%m')" />
- </ appender >
数据库为logdb,用户名和密码为空,这两项必须设,因为JDBCAppender中有默认值,如果不设连接数据库会报错。
LOG4J 表的生成SQL语句为:
- create table log4j( Date varchar (100), Logger varchar (1000), Priority varchar (100), Thread varchar (30), Message varchar (1000));
然后在log4j.xml配置文件中,把db appender添加到需要的logger中,如下:
- < logger name = "org.tkxing" additivity = "false" >
- < level value = "DEBUG" />
- < appender-ref ref = "logfile" />
- < appender-ref ref = "stream" />
- < appender-ref ref = "db" />
- </ logger >
- < logger name = "org.tkxing" additivity = "false" >
- < level value = "DEBUG" />
- < appender-ref ref = "logfile" />
- < appender-ref ref = "stream" />
- < appender-ref ref = "db" />
- </ logger >
就可以把日志内容输入到数据库中了。