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)
    
  • 相关阅读:
    网上找的面试题-之一
    python里的Join函数
    【转载51CTO】Linux中引号那些事儿
    【面试编程题】巧妙排序:排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。
    [转载]mininet的安装和使用
    Open vSwitch源码阅读【转】及自己的理解【稍后更新】
    7、8月份安排 进度条
    请不要忽视基础小细节
    【编程之美】2.20 程序理解问题
    GDOI2017爆炸记
  • 原文地址:https://www.cnblogs.com/xing901022/p/4856698.html
Copyright © 2011-2022 走看看