使用JDBC保存Log4J日志信息

package    log4jtest;   
    
   import    org.apache.log4j.*;   
   import    org.apache.log4j.jdbc.JDBCAppender;   
   import    java.sql.*;   
   import    org.apache.log4j.spi.*;   
   import    org.apache.log4j.PatternLayout;   
    
    
   /**   
     *    <p>Title:    </p>   
     *    <p>Description:    使用jdbc来保存log4j日志信息。   
     *    The    JDBCAppender    provides    for    sending    log    events    to    a    database.    </p>   
     *    <p>   
     *    *    在数据库创建数据表,运行程序迁,先创建下面的数据库对象   
         --Create    sequence   
         create    sequence    SEQ_wdzlog;   
         --    Create    table   
         create    table    WDZLOG   
         (   
             WDZLOGID    NUMBER(10)    not    null,   
             LogName      VARCHAR2(255),   
             LogLevel    VARCHAR2(20),   
             MSG              VARCHAR2(255)   
         );   
    
         alter    table    WDZLOG   
             add    constraint    PK_WDZLOGID    primary    key    (WDZLOGID);   
    
     *    </p>   
     *    <p>Copyright:    Copyright    (c)    2003</p>   
     *    <p>Company:    netsky</p>   
     *    @author    wdz(    hotmail    [email protected])   
     *    @version    1.0   
     */   
    
    
    
   public    class    WdzJdbcLogTest1    {   
       private    Logger    logger;   
       private    JDBCAppender    jdbcAppender;   
       /**   
         自己定义的日志保存类   
         *    **/   
       class    WdzJDBCAppender   
               extends    JDBCAppender    {   
           private    LoggingEvent    e;   
           /**   
             *    可以修改这个方法,实现PreparedStatement,Connection得重用   
             *    */   
           protected    void    execute(String    sql)    throws    SQLException    {   
               Connection    con    =    null;   
               PreparedStatement    stmt    =    null;   
               try    {   
                   con    =    getConnection();   
                   stmt    =    con.prepareStatement(this.getSql());   
                   stmt.setString(1,    e.getLoggerName());//LogName   
                   stmt.setString(2,    e.getLevel().toString());//LogLevel   
                   stmt.setString(3,    (String)    e.getMessage());//MSG   
                   stmt.execute();   
               }   
               catch    (SQLException    e)    {   
                   if    (stmt    !=    null)   
                       stmt.close();   
                   throw    e;   
               }   
               stmt.close();   
               closeConnection(con);   
           }   
    
           /***保存日志事件   
             *    **/   
           protected    String    getLogStatement(LoggingEvent    event)    {   
               e    =    event;   
               return    getLayout().format(event);   
           }   
       }   
    
       public    WdzJdbcLogTest1()    {   
           logger    =    Logger.getLogger(WdzJdbcLogTest1.class.getName());   
           //测试,使用jdbc来保存日志信息   
           testJDBCAppender();   
       }   
    
       /**   
         *    写信息到日志中去   
       *    **/   
       private    void    writeLogInfo(){   
           logger.addAppender(jdbcAppender);   
           logger.setLevel(Level.ALL);   
           logger.debug("aaa    debug    info");   
           //logger.debug("aaa    debug    info.aaa");   
           logger.info("bbb    info");   
           logger.warn("warn    info");   
           logger.error("error    info");   
           logger.fatal("fatal    info");   
    
       }   
       private    void    testJDBCAppender()    {   
           jdbcAppender    =    new    WdzJDBCAppender();   
     package    log4jtest;   
    
   import    org.apache.log4j.*;   
   import    org.apache.log4j.jdbc.JDBCAppender;   
   import    java.sql.*;   
   import    org.apache.log4j.spi.*;   
   import    org.apache.log4j.PatternLayout;   
    
    
   /**   
     *    <p>Title:    </p>   
     *    <p>Description:    使用jdbc来保存log4j日志信息。   
     *    The    JDBCAppender    provides    for    sending    log    events    to    a    database.    </p>   
     *    <p>   
     *    *    在数据库创建数据表,运行程序迁,先创建下面的数据库对象   
         --Create    sequence   
         create    sequence    SEQ_wdzlog;   
         --    Create    table   
         create    table    WDZLOG   
         (   
             WDZLOGID    NUMBER(10)    not    null,   
             LogName      VARCHAR2(255),   
             LogLevel    VARCHAR2(20),   
             MSG              VARCHAR2(255)   
         );   
    
         alter    table    WDZLOG   
             add    constraint    PK_WDZLOGID    primary    key    (WDZLOGID);   
    
     *    </p>   
     *    <p>Copyright:    Copyright    (c)    2003</p>   
     *    <p>Company:    netsky</p>   
     *    @author    wdz(    hotmail    [email protected])   
     *    @version    1.0   
     */   
    
    
    
   public    class    WdzJdbcLogTest1    {   
       private    Logger    logger;   
       private    JDBCAppender    jdbcAppender;   
       /**   
         自己定义的日志保存类   
         *    **/   
       class    WdzJDBCAppender   
               extends    JDBCAppender    {   
           private    LoggingEvent    e;   
           /**   
             *    可以修改这个方法,实现PreparedStatement,Connection得重用   
             *    */   
           protected    void    execute(String    sql)    throws    SQLException    {   
               Connection    con    =    null;   
               PreparedStatement    stmt    =    null;   
               try    {   
                   con    =    getConnection();   
                   stmt    =    con.prepareStatement(this.getSql());   
                   stmt.setString(1,    e.getLoggerName());//LogName   
                   stmt.setString(2,    e.getLevel().toString());//LogLevel   
                   stmt.setString(3,    (String)    e.getMessage());//MSG   
                   stmt.execute();   
               }   
               catch    (SQLException    e)    {   
                   if    (stmt    !=    null)   
                       stmt.close();   
                   throw    e;   
               }   
               stmt.close();   
               closeConnection(con);   
           }   
    
           /***保存日志事件   
             *    **/   
           protected    String    getLogStatement(LoggingEvent    event)    {   
               e    =    event;   
               return    getLayout().format(event);   
           }   
       }   
    
       public    WdzJdbcLogTest1()    {   
           logger    =    Logger.getLogger(WdzJdbcLogTest1.class.getName());   
           //测试,使用jdbc来保存日志信息   
           testJDBCAppender();   
       }   
    
       /**   
         *    写信息到日志中去   
       *    **/   
       private    void    writeLogInfo(){   
           logger.addAppender(jdbcAppender);   
           logger.setLevel(Level.ALL);   
           logger.debug("aaa    debug    info");   
           //logger.debug("aaa    debug    info.aaa");   
           logger.info("bbb    info");   
           logger.warn("warn    info");   
           logger.error("error    info");   
           logger.fatal("fatal    info");   
    
       }   
       private    void    testJDBCAppender()    {   
           jdbcAppender    =    new    WdzJDBCAppender();   
           //下面的参数可以自己修改满足自己的要求   
           //设置    日志数据库保存使用的参数,可以采用配置文件的方式来加载信息   
           jdbcAppender.setDriver("oracle.jdbc.driver.OracleDriver");   
           jdbcAppender.setURL("jdbc:oracle:thin:@wdz:1521:wdzdb");   
           jdbcAppender.setUser("apple");   
           jdbcAppender.setPassword("apple");   
           jdbcAppender.setSql("insert    into    WDZLOG    values    (SEQ_WDZLOG.nextval,?,?,?)");   
           //测试使用数据库保存日志信息   
           writeLogInfo();   
           jdbcAppender.close();   
       }   
    
       public    static    void    main(String[]    args)    {   
           WdzJdbcLogTest1    wdzTest11    =    new    WdzJdbcLogTest1();   
       }   
   }        //下面的参数可以自己修改满足自己的要求   
           //设置    日志数据库保存使用的参数,可以采用配置文件的方式来加载信息   
           jdbcAppender.setDriver("oracle.jdbc.driver.OracleDriver");   
           jdbcAppender.setURL("jdbc:oracle:thin:@wdz:1521:wdzdb");   
           jdbcAppender.setUser("apple");   
           jdbcAppender.setPassword("apple");   
           jdbcAppender.setSql("insert    into    WDZLOG    values    (SEQ_WDZLOG.nextval,?,?,?)");   
           //测试使用数据库保存日志信息   
           writeLogInfo();   
           jdbcAppender.close();   
       }   
    
       public    static    void    main(String[]    args)    {   
           WdzJdbcLogTest1    wdzTest11    =    new    WdzJdbcLogTest1();   
       }   
   }

你可能感兴趣的:(log4j,数据库,String,jdbc,null,import)