zoukankan      html  css  js  c++  java
  • Log4j官方文档翻译(九、输出到数据库)

    log4j提供了org.apache.log4j.JDBCAppender对象,可以把日志输出到特定的数据库。

    常用的属性:

    • bufferSize 设置buffer的大小,默认是1
    • driver 设置数据库的驱动字符串,比如sun.jdbc.odbc.OdbcDriver
    • layout 设置使用的layout,默认是org.apache.log4j.PatternLayout
    • password 设置数据的密码
    • sql 设置每次日志产生的时候执行的sql语句,可以是INSERT,UPDATE,DELETE
    • URL 设置JDBC URL
    • user 设置数据库的用户名

    在输出日志之前,还应该创建数据库中的表,执行下面的SQL语句

    
    CREATE TABLE LOGS
    (USER_ID VARCHAR(20) NOT NULL,
    DATED
    DATE NOT NULL,
    LOGGER VARCHAR(50) NOT NULL,
    LEVEL
    VARCHAR(10) NOT NULL,
    MESSAGE VARCHAR(1000) NOT NULL
    );
    

    log4j.properties文件配置

    下面是JDBCAppender的相关配置:

    
    log4j.rootLogger = DEBUG, DB
    log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.DB.URL=jdbc:mysql://localhost/DBNAME
    log4j.appender.DB.driver=com.mysql.jdbc.Driver
    log4j.appender.DB.user=user_name
    log4j.appender.DB.password=password
    log4j.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中配置可以参考如下:
    ``

    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");
    }
    }
    

    编译和执行

    执行后就可以查询结果了:

    
    mysql > select * from LOGS;
    +---------+------------+--------------+-------+---------+
    | USER_ID | DATED
    | LOGGER
    | LEVEL | MESSAGE |
    +---------+------------+--------------+-------+---------+
    |
    | 2010-05-13 | log4jExample | DEBUG | Debug
    |
    |
    | 2010-05-13 | log4jExample | INFO | Info
    |
    +---------+------------+--------------+-------+---------+
    2 rows in set (0.00 sec)
    
  • 相关阅读:
    #2051:Bitset(进制转化)
    #2054:A == B ?(水题坑人)
    #2045:不容易系列之三LELE的RPG难题(dp递推)
    #2037:今年暑假不AC
    #2036:改革春风吹满地
    OJ中的语言选项里G++ 与 C++的区别
    如何在CSDN上如何快速转载博客
    Python之路(第八篇)Python内置函数、zip()、max()、min()
    Python编程笔记(第一篇)Python基础语法
    Python之路(第七篇)Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数
  • 原文地址:https://www.cnblogs.com/xing901022/p/4856698.html
Copyright © 2011-2022 走看看