log4j提供了org.apache.log4j.JDBCAppender对象,可以把日志输出到特定的数据库。
常用的属性:
bufferSize
设置buffer的大小,默认是1driver
设置数据库的驱动字符串,比如sun.jdbc.odbc.OdbcDriverlayout
设置使用的layout,默认是org.apache.log4j.PatternLayoutpassword
设置数据的密码sql
设置每次日志产生的时候执行的sql语句,可以是INSERT,UPDATE,DELETEURL
设置JDBC URLuser
设置数据库的用户名
在输出日志之前,还应该创建数据库中的表,执行下面的SQL语句
CREATE TABLE LOGS
(USER_ID VARCHAR(20) NOT NULL,
DATEDDATE NOT NULL,
LOGGER VARCHAR(50) NOT NULL,LEVELVARCHAR(10) NOT NULL,
MESSAGE VARCHAR(1000) NOT NULL
);
log4j.properties文件配置
下面是JDBCAppender的相关配置:
log4j.rootLogger = DEBUG, DBlog4j.appender.DB=org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.DB.URL=jdbc:mysql://localhost/DBNAMElog4j.appender.DB.driver=com.mysql.jdbc.Driverlog4j.appender.DB.user=user_namelog4j.appender.DB.password=passwordlog4j.appender.DB.sql=INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')log4j.appender.DB.layout=org.apache.log4j.PatternLayout
对于MySQL数据库来说,当创建了LOGS表后你还需要使用dbname,user_name,password。
如果在xml中配置可以参考如下:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration> <appender name="DB" > <param name="url" value="jdbc:mysql://localhost/DBNAME"/> <param name="driver" value="com.mysql.jdbc.Driver"/> <param name="user" value="user_id"/> <param name="password" value="password"/> <param name="sql" value="INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')"/> <layout > </layout> </appender> <logger name="log4j.rootLogger" additivity="false"> <level value="DEBUG"/> <appender-ref ref="DB"/> </logger> </log4j:configuration>
代码样例
下面这个例子,在java代码中使用了Log4j输出:
import org.apache.log4j.Logger;import java.sql.;import java.io.;import java.util.;public class log4jExample{/ Get actual class name to be printed on */static Logger log = Logger.getLogger(log4jExample.class.getName());public static void main(String[] args)throws IOException,SQLException{
log.debug("Debug");
log.info("Info");
}
}
编译和执行
执行后就可以查询结果了:
select---------+------------+--------------+-------+---------+---------+------------+--------------+-------+---------+2010-05-132010-05-13---------+------------+--------------+-------+---------+2in0.00
本文转自博客园xingoo的博客,原文链接:Log4j官方文档翻译(九、输出到数据库),如需转载请自行联系原博主。