日期:2014-05-16  浏览次数:20520 次

Tomcat Log4j配置,生成日志到数据库!

由于最近正在扩展卫生局考务系统,由于上一次使用过一次该系统后,发现很多考生最后出现说已打印报名表但却在数据库中找不到她的报名记录;

因此为了以后有依据,将所有用户的操作日志文件写入数据供管理员查询成为了这次扩张项目的一个内容;

这里我决定使用的log4j日志文件,在多次的使用中感觉这个很不错;

首先我们要使用log4j日志文件时,我们需将两个必须的包放入lib目录下:log4j.XX.jar和commons-logging.XX.jar;

然后在classpath目录下(IDE中即为项目下的src目录下)新建一个日志文件,统一命名为:log4j.properties

1.需求一:只需要满足存储数据库:

a.以下我们一ms sql 2000为例:首先在数据库中建一个用来存储日志的数据库命名为 operate_log;字段如下:

b.数据库成功建立后,就可以去配置日志文件log4j.properties,代码如下:

复制代码
log4j.properties  

log4j.rootLogger=INFO,db
            
########################  
 
# JDBC Appender  
 
#######################  
 
 
#log4j.logger.business=INFO,db  
#log4j.appender.db=com.neam.commons.MyJDBCAppender  

log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
 
log4j.appender.db.BufferSize=1
  
log4j.appender.db.driver=net.sourceforge.jtds.jdbc.Driver
                        
log4j.appender.db.URL=jdbc:jtds:sqlserver://localhost:1433;DatabaseName=infor_manage
#enter  
log4j.appender.db.user=sa 
  
log4j.appender.db.password=123 
log4j.appender.db.sql=insert into operate_log(class,method,createtime,loglevel,logmsg,
user_id,user_type) values ('%C','%M','%d{yyyy-MM-dd HH\:mm\:ss}','%p','%m','1',1)  
  
log4j.appender.db.layout=org.apache.log4j.PatternLayout  
复制代码

上面的配置就是最精简的将日志内容直接存储进入数据库
下面来稍微解释:

log4j.rootLogger=INFO,db语法为:

##log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
##level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、##WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志##信息将不被打印出来。
##appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
##例如:log4j.rootLogger=info,A1,B2,C3 配置了3个输出地方,这个名字可以任意(如上面的db),但必须与我们在后面进行的设置名字对应;

然后下面就是进行数据库连接的配置,log4j是使用jdbc进行连接的,该封转的类就是log4j包下的 org.apache.log4j.jdbc.JDBCAppender,大家对jdbc了解的话上面的内容应该是很简单的;

这里要注意的就是:1.记得把数据库连接的相关包放到lib目录下,2.在写连接数据库的信息时如user等注意后面不要有空格,否则就不能连上数据库

c.日志文件配置完成后,我们就可以进行测试了,我们可以随便在后台写一个类: