昨天公司说要在系统中添加日志查询统计功能,刚开始第一个念头就是用IO流读
取日志文件,然后持久化,最后在系统中查询。结果看了一些LOG4J的说明文档后发现,原来LOG4J本身就有将日志信息存入数据库功能,这样就大大节省
了开发的时间,半天搞定。现在把方法记录下来,希望对有需要的朋友有所帮助。
一、前提条件
系统必须是使用LOG4J进行日志管理,否则方法无效。
系统必须包含commons-logging-xxx.jar,log4j-xxx.jar这两个JAR包,XXX为版本号。
二、操作步骤
1、创建日志表
要把日志持久化,必须在数据库中创建一张用来存储日志信息的表,表内字段为日志
的一个主要属性包括:操作类,执行方法,打印时间,日志级别,日志内容。
CREATE TABLE RESLOG (LOGID VARCHAR2(20) NOT NULL,
CLASS VARCHAR2(200),
METHOD VARCHAR2(100),
CREATETIME DATE,
LOGLEVEL VARCHAR2(50),
MSG VARCHAR2(4000))
因为存储的类为类的全部路径,所以CLASS字段长度需要比较大。
2、日志管理配置
LOG4J主要有两种配置文件.properties和.xml,这里以properties文件为基础来讲
述,关于XML文件的配置,相信大家看完下面的介绍也一样能轻松完成。
通常在LOG4J.PROPERTIES文件的第一行是:
log4j.rootLogger= XXX,这句是控制日志的输出,如果想吧日志输出到数据库,
则需要在XXX中添加“DB”,如log4j.rootLogger=INFO,stdout,Platform,db。上面
这句就是把日志中级别为INFO的信息输出到STDOUT,PLATFORM和DB
(DATABASE)中。
配置好如上的信息,LOG4J就知道用户是想把信息存入数据库,接下来我们就要来
配置数据库的相关信息(包括缓存,数据库连接信息,和执行SQL),配置信息如下:
###JDBCAppender
log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender
//这个配置是选择使用JDBCAppender方法,将日志信息存储到数据库。当然,如果你还要做其他操作,可以自己写个类,继承JDBCAppender就OK了。
log4j.appender.db.BufferSize=1
//这个配置是告诉LOG4J,有多少条日志信息后才存入数据库,我这里是1,就是说有一条就查一条,显然这样在生产环境下是很影响系统性能的。
log4j.appender.db.driver=oracle.jdbc.driver.OracleDriver
//这个配置是告诉LOG4J,做数据库存储所用的驱动。
log4j.appender.db.URL=jdbc:oracle:thin:@<ip>:<port>:<sid>
//这个配置数据库连接的URL,不用说也都知道。
log4j.appender.db.user=XXX
log4j.appender.db.password=XXX
//上面两个是数据库连接时的用户名和密码
log4j.appender.db.sql=insert into RESLOG
(LogId,Class,Method,createTime,LogLevel,MSG)
values (SQ_RESLOG_LOGID.Nextval,'%C','%M',
to_date('%d{yyyy-MM-dd HH:mm:ss}','yyyy-MM-dd
HH24:mi:ss'),'%p','%m')
//这个配置是告诉当LOG4J吧日志存储数据库时用的SQL语句。SQ_RESLOG_LOGID.Nextval是我建的一个
SEQUENCE;‘%C’是日志中的CLASS;‘%M’是打印日志是执行到类里的方法;‘%d’是打印的时间,它支持格式化;‘%P’是日志级别,包
括INFO、DEBUG、ERROR等;‘%m’是MSG,日志内容。注意这里的参数区分大小写。
log4j.appender.db.layout=org.apache.log4j.PatternLayout
通过上面的配置,现在再启动服务,LOG4J就会自动把原来存储在.LOG文件中的信息,同时存储到数据库了。
当然,LOG4J还支持自定义参数,如打印日志时当前的用户信息等,这个以后以机会再说。
分享到:
相关推荐
总结,Log4j2通过XML配置文件实现了与MySQL数据库的集成,允许开发者将日志信息存储在数据库中,便于长期保存和分析。理解Log4j2的配置和使用是每个Java开发者必备的技能,这对于日后的故障排查和系统维护至关重要。...
### Log4j 日志信息存储到数据库中的配置与使用 #### 概述 在软件开发过程中,日志记录是至关重要的环节之一。它不仅能够帮助开发者追踪程序运行时的状态,还可以在系统出现故障时提供诊断信息。Apache Log4j 是一...
这篇博客“使用log4j记录日志到数据库”将介绍如何配置和使用Log4j,以便将日志信息存储到数据库中,而非传统的文本文件。数据库存储的日志便于进行结构化查询,有助于进行长期的数据分析和管理。 首先,理解Log4j...
**标题解析:** "log4j输出日志到数据库表中" 指的是使用Log4j这个流行的Java日志框架,将日志记录存储在数据库的特定表中,而不是默认的文本文件或控制台。这通常是出于日志管理、分析和长期存储的需求。 **描述...
本文将深入讲解如何利用Log4j将日志信息存储到数据库中。 首先,我们需要理解Log4j的基本架构。Log4j由三个主要组件构成:Logger(日志器)、Appender(输出端)和Layout(格式化器)。Logger负责生成日志事件,...
为了存储log4net产生的日志,你需要在数据库中创建一个对应的表。通常,这个表会包含日期、线程ID、日志级别、日志源、日志消息和异常信息等字段。 ```sql CREATE TABLE [dbo].[Log]( [Id] [int] IDENTITY(1,1) ...
2. **JDBC Appender**:Log4j提供了JDBCAppender,用于将日志信息存储到数据库中。在配置文件中,我们需要设置数据库连接信息,包括驱动类名、URL、用户名和密码。 3. **SQL语句**:JDBCAppender会执行用户提供的...
MySQL数据库日志存储 MySQL是一种高性能、可扩展的数据库,适用于各种规模的应用。使用MySQL存储日志,可以方便地进行日志查询、分析和备份。通过log4net,我们可以将应用程序的日志信息记录到MySQL的特定表中,...
通过以上步骤,我们成功实现了使用Log4j将日志信息写入数据库的功能。这种方式不仅能够帮助我们更好地管理日志信息,同时也为后续的数据分析提供了便利。在实际应用中,可以根据具体需求调整日志表结构和配置参数,...
标题"log4net写入sql server数据库实例"指出,这是一个关于如何使用log4net库在基于MVC(Model-View-Controller)框架的应用程序中记录日志,并将这些日志信息存储到SQL Server数据库的示例教程。 描述中提到,这个...
Log4j的设计理念是“日志在哪里产生就在哪里处理”,这使得它能够方便地集成到各种应用程序中,无论是简单的控制台输出,还是复杂的数据库存储,都能轻松应对。 2. **Log4j组件** - **Logger**: 日志记录器,负责...
使用log4net进行日志记录在项目中使用的示例。 本示例中包含常用的写日志到文件(按日期自动生成文件名称)及写日志到SQLite数据库两种方式。 示例资源中包含源码及演示作品两部分,使用前请先修改SQLite数据库的...
本篇将详细介绍如何配置Log4j来将日志信息存储到MySQL数据库中,以实现日志的集中管理和分析。 首先,我们需要了解Log4j的基本结构。Log4j主要由三个组件构成:Logger(日志器)、Appender(输出端)和Layout(布局...
因此,本文将深入探讨如何利用数据库对Log4j日志进行高效管理,特别是通过DBCP(Database Connection Pooling)和MySQL数据库的结合,实现日志的集中式存储和查询,同时添加用户名等附加信息,增强日志的可追溯性和...
本文将详细阐述如何配置Log4j以将日志信息存储到数据库中。 首先,我们需要在数据库中创建一个适合存储日志数据的表。在提供的信息中,我们看到了一个名为`LOGGING`的表结构,包含四个字段:`log_date`(日期)、`log...
总之,Log4j通过其灵活的配置,可以满足不同场景下的日志需求,无论是简单地输出到控制台,还是复杂地发送邮件或存入数据库,都能轻松实现。对于开发和运维人员来说,理解和掌握Log4j的配置方法是十分重要的,它能极...
本文将深入探讨如何利用`log4j`实现按照日期每天写入不同日志文件的功能,以及涉及到的相关知识点。 首先,我们要理解`log4j.properties`配置文件的作用。它是`log4j`的配置中心,通过这个文件我们可以定制日志输出...
如果是一个服务,它可能负责收集和处理应用程序的日志,然后通过Log4j和MySQLAppender将这些日志存储到MySQL数据库中。 总结起来,通过使用Log4j与MySQL的集成,我们可以实现对日志的详细控制,并将这些日志安全地...
在上述配置中,我们设置了AdoNetAppender,它将日志信息存储到SQL Server数据库的ErrorLog表中。如果需要,可以自定义表结构,以便包含更多相关信息,如机器名、用户名等。此外,Log4Net还支持其他类型的Appender,...