zoukankan      html  css  js  c++  java
  • log4j输出到数据库(输出自定义参数、分级保存)

    转载自: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 

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

  • 相关阅读:
    利用接口实现简单工厂模式
    简单工厂代码演示
    创建对象的三种方式
    eclipse中常用快捷键
    glog功能介绍
    sublime操作
    caffe train c++
    各层参数介绍,尤其数据层
    LSTM长短期记忆网络
    caffe c++
  • 原文地址:https://www.cnblogs.com/ycpanda/p/3637318.html
Copyright © 2011-2022 走看看