Log4j官方文档翻译(九、输出到数据库)-阿里云开发者社区

开发者社区> 青夜之衫> 正文

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

编译和执行

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

select---------+------------+--------------+-------+---------+---------+------------+--------------+-------+---------+2010-05-132010-05-13---------+------------+--------------+-------+---------+2in0.00

本文转自博客园xingoo的博客,原文链接:Log4j官方文档翻译(九、输出到数据库),如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
自定义LOG投递OSS数据Partition,优化你的计算
数据划分Partition OSS数据存储具有高可靠、低成本等优点,是海量数据存储的最佳选择之一,尤其适用于半结构化的日志存储,并可以结合E-MapReduce(使用Hive、Impala等计算引擎)通过schema-on-read方式加载数据做查询分析。
4025 0
简书非官方大数据新思路
爬虫小分队的终极大任务就是简书大数据,以前也做过一次,阅读量也还可以。前段时间简书也是融资成功,简书也有一些改动,这次做分析也是一个不错的机会。 专题URL 这部分是没有变得,因为简书没有用户管理的url,我们只能从专题URL入手,依旧是热门和城市。
637 0
Mysql数据库Slow_log中的lock_Time和Query_time
主要用简单的例子来说明,slow log里的lock_time和query_time的关系,得出的结论是: 当一个sql的执行时间(排除lock_time)大于long_query_time的时候,才会被记录到slow log中,并且query_time是累计了lock_time的(如果有lock.
388 0
【文档】一、Mysql BinLog概述
Binlog是一系列日志文件,他们包含的内容是Mysql数据内容的改变。如果想开启binlog功能,需要在启动时带上--log-bin参数。 binlog是从Mysql3.23.14版本开始的。它包含所有更新数据的sql语句。
1274 0
jQuery EasyUI API 中文文档 - 对话框(Dialog)
Dialog 对话框 扩展自 $.fn.window.defaults,用 $.fn.dialog.defaults 重写了 defaults。 依赖 window linkbutton 用法 1. 2.     Dialog Content.   3. 1. $('#dd').dialog({   2.     modal:true 3. });  特性 其特性扩展自 window,下列是为 dialog 重写的特性。
755 0
Objective-c官方文档 封装数据属性
版权声明:原创作品,谢绝转载!否则将追究法律责任。   很多对象需要跟踪信息为了执行他们的任务。一些对象设计模型一个或者多个值。例如NSNumber 类用来保存一个值或者自定义的类有一些属性。有一些对象不在一般的范围内。
830 0
简书非官方大数据(三)
最近回老家了一趟,爬取简书的程序也就停下来了,回到长沙继续爬,很高兴的爬到了300W左右,导出来一看,好多重复的,我记得我说过设置过的,拿到代码一看,晕: 插入的是author_infos表,但判断却是author_url表,然后我就打算去重后调用url爬取用户详细信息,可耐mongodb去重不会,自己百度了下也没搞明白;再者,向右前辈说我爬取字段太少,那我就想重新修改爬取好了(已哭晕在厕所)。
797 0
+关注
1040
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载