log4j输出到数据库(输出自定义参数、分级保存)

来源:互联网 发布:mac 看图软件 编辑:程序博客网 时间:2024/06/06 00:50

转载自:http://wallimn.iteye.com/blog/1525819


Log4J日志输出到数据库中,且保存些用户自定义的参数,如用户ID,且配置仅输出指定级别的日志。 

配置文件如下:  
log4j.rootLogger=DEBUG,logfile,stdout 

log4j.logger.SYSTEM = INFO,JDBC 
#也可以使用包名或类名,这样可以用JAVA的class来初始化logger 
log4j.logger.com.wallimn.test=INFO,JDBC 
#不继承父appender的配置,如果取消注释,rootCategory指定的appender将不再输出 
#log4j.additivity.SYSTEM=false
 

#stdout configure 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Threshold=DEBUG 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern= %d %5p [%c] - %m%n 

#logfile configure 
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.logfile.File=./wallimn.log 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern= %d{yyyy MM dd HH:mm:ss} %5p [%c] - %m%n 

#JDBC configure 
log4j.appender.JDBC=org.apache.log4j.jdbc.JDBCAppender 
#此处优先级高于log4j.logger.SYSTEM指定级别, 
log4j.appender.JDBC.Threshold=INFO 
log4j.appender.JDBC.driver=oracle.jdbc.driver.OracleDriver 
log4j.appender.JDBC.URL=jdbc:oracle:thin:@127.0.0.1:1521:swdb 
log4j.appender.JDBC.user=scott 
log4j.appender.JDBC.password=tiger 
log4j.appender.JDBC.layout=org.apache.log4j.PatternLayout 
log4j.appender.JDBC.sql=INSERT INTO XT_SYS_LOG(USERID,LOGTIME,LOGLEVEL,LOGACTION,MESSAGE)VALUES('%X{userId}',sysdate,'%p','%l','%m')
log4j.appender.JDBC.filter.F1=org.apache.log4j.varia.LevelRangeFilter 
#只接收ERROR级别的日志,这是很有用的技术 
#这功能在1.2.8版本时,不支持这样配置,好像仅支持XML方式配置,我试了好多次才发现这个问题 
#可多个Filter组合共同限制
 
log4j.appender.JDBC.filter.F1.levelMin=ERROR 
log4j.appender.JDBC.filter.F1.levelMax=ERROR 
log4j.appender.JDBC.filter.F1.acceptOnMatch=true 

建测试表的SQL: 
create table xt_sys_log( 
userid number, 
logtime date, 
logaction varchar2(100), 
loglevel varchar2(100), 
message varchar2(255)); 

测试类: 

Java代码  收藏代码
  1. package com.wallimn.test;  
  2.   
  3. import org.apache.log4j.Logger;  
  4. import org.apache.log4j.MDC;  
  5.   
  6. import junit.framework.TestCase;  
  7.   
  8. public class Log4JTest extends TestCase {  
  9.   
  10.     public void testLog1(){  
  11.         Logger logger = Logger.getLogger("SYSTEM");      
  12.         //Logger logger = Logger.getLogger(Log4JTest.class);      
  13.             MDC.put("userId""11");      
  14.             logger.fatal("test_fatal");  
  15.             logger.error("test_Error");  
  16.             logger.warn("test_warn");  
  17.             logger.info("test_Info");  
  18.             logger.debug("test_debug");  
  19.             MDC.remove("userId");  
  20.     }  
  21. }  
  

控制台输出: 
2012-05-12 22:08:01,156 FATAL [SYSTEM] - test_fatal 
2012-05-12 22:08:01,156 ERROR [SYSTEM] - test_Error 
2012-05-12 22:08:01,421 WARN [SYSTEM] - test_warn 
2012-05-12 22:08:01,421 INFO [SYSTEM] - test_Info 

数据库记录查询: 
SQL> select userid,loglevel,message from xt_sys_log; 

    USERID LOGLEVEL             MESSAGE 
---------- -------------------- -------------------- 
        11 ERROR                test_Error 

注意:仅记录了一条日志。 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 战地1更新很慢怎么办 客户端提示初始化控件失败怎么办 刺客信条兄弟会存档损坏怎么办 百度不小心点赞怎么办 c盘空间不够了怎么办 百度云打开压缩文件失败怎么办 电脑只有一个c盘怎么办 u盘文件删不了怎么办 在电脑上照片打不开乱码怎么办 win7电脑登录密码忘记了怎么办 三洋电视应用商店打不开怎么办 中兴手机应用商店打不开怎么办 绝地求生与服务器失去连接怎么办 战地4载入不进去怎么办 电脑软件无法找到入口怎么办 ipad的按键坏了怎么办 更新ios12软件闪退怎么办 设置虚拟服务器输入不了数字怎么办 玩客云自动备份设备连接失败怎么办 3dmax文件打开失败怎么办 夏天吹空调嘴歪怎么办 燃气热水器温度调节拧不动怎么办 能率热水器震动声大怎么办 车底盘磕了漏油怎么办 法士特变速箱的随动阀漏气了怎么办 大灯随动afs失灵怎么办 2017款迈腾大灯随动故障怎么办 微信gps信号不好怎么办 苹果6s定位不准怎么办 电脑不读取u盘怎么办 注塑机上的料烤坨了怎么办 智能锁电机坏了怎么办 注塑机加热嘴内扣突了怎么办 tpu粘在螺杆上怎么办 注塑机锁模时会有射退动作怎么办 电动车刹车油泵不打油怎么办 cad转pdf颜色浅怎么办 松下多功能传真一体机卡纸怎么办 无刷电机坏了怎么办 6kv高压电机绝缘不合格怎么办? 400t油压机下降太慢怎么办