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中配置可以参考如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration> <appender name="DB" > <param name="url" value="jdbc:mysql://localhost/DBNAME"/> <param name="driver" value="com.mysql.jdbc.Driver"/> <param name="user" value="user_id"/> <param name="password" value="password"/> <param name="sql" value="INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')"/> <layout > </layout> </appender> <logger name="log4j.rootLogger" additivity="false"> <level value="DEBUG"/> <appender-ref ref="DB"/> </logger> </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)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Matplotlib 绘制饼图解决文字重叠的方法
- Yii 实现数据加密和解密的示例代码
- 3分钟看懂Python后端必须知道的Django的信号机制
- Hadoop 2.X新特性回收站功能的讲解
- php开发论坛系统
- 详解python中GPU版本的opencv常用方法介绍
- 详解Python IO编程
- PHP 使用位运算实现四则运算的代码
- linux操作系统下配置ssh/sftp和权限设置办法
- 15分钟并行神器gnu parallel入门指南
- php实现验证邮箱格式的代码实例
- Packetdrill的简明使用手册
- Laravel5.1 框架模型远层一对多关系实例分析
- Linux系统中时间的获取和使用
- thinkphp5.1验证码及验证码验证功能的实现详解