将日志写入数据库

之前做的一个项目有这么个要求,在日志管理系统里,需要将某些日志信息存储到数据库里,供用户、管理员查看分析。因此我就花了点时间搞了一下这一功能,各位请看。

摘要:我们知道log4j能提供强大的可配置的记日志功能,有写文件的、打印到控制台的等等,但有时我们需要它把日志输出到后台数据库中,log4j的强大的可扩展性支持了这一点,以下就是具体的实现。

关键词:log,log4j,日志,Java,DB,数据库,slf4j

前提:已经配置好slf4j、log4j,能正常的往文件或控制台写日志。

需求:将日志写入到数据库中。

说明:使用log4j-1.2.17.jar,slf4j-api-1.7.5.jar,slf4j-log4j12-1.6.6.jar。


步骤一:

你得先能写入数据库,编写一个能往数据库日志表中写数据的接口,无论是WebService还是什么,这里假如是一个Java接口。
Log是定义的一个日志类,使用LogService对象调用logBll.add(Log log)方法即能够向数据库中添加一条日志信息。


1

2

3

4

5

6

7

8

9

public class Log {

    private Long id;

    private String logNum;

    private String userId;

    private Calendar time;

    private int type;

    private String content;

    ...

}

步骤二:

编写一个继承自AppenderSkeleton类的类,并重写它的append方法。在append方法里面,即调用了上一步定义的Java接口,logBll.add(log),向数据库中写入一条日志信息。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

public class DBAppender extends AppenderSkeleton {

    private LogService logBLL = new LogService();

    @Override

    protected void append(LoggingEvent arg0) {

        if (!arg0.getLoggerName().startsWith(Constants.ProjetNS))

            return;

        Log log = new Log();

        log.setType(arg0.getLevel().toInt());

        log.setTime(Calendar.getInstance());

        log.setUserId("system");

        log.setContent(arg0.getRenderedMessage());

        logBll.add(log);

    }

}

步骤三:

改新log4j.properties配置文件,类似如下所示。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# Root logger option

log4j.rootLogger=WARN, stdout, file, db

# Direct log messages to stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.file = org.apache.log4j.DailyRollingFileAppender

log4j.appender.file.File = logs/log.log

log4j.appender.file.Append = true

log4j.appender.file.Threshold = ERROR

log4j.appender.file.layout = org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n

log4j.appender.db = com.aitanjupt.angel.log.DBAppender

以上文件主要增加配置了一个日志输出方向,向数据库输出,并指定了具体的处理类。

在需要输出日志的地方,正常的使用:

private Logger logger = LoggerFactory.getLogger(SpringServiceSupport.class);

logger.error(ex);...即可。</span

将日志写入数据库

时间: 2024-11-08 03:13:28

将日志写入数据库的相关文章

使用log4j让日志写入数据库

之前做的一个项目有这么个要求,在日志管理系统里,需要将某些日志信息存储到数据库里,供用户.管理员查看分析.因此我就花了点时间搞了一下这一功能,各位请看. 摘要:我们知道log4j能提供强大的可配置的记日志功能,有写文件的.打印到控制台的等等,但有时我们需要它把日志输出到后台数据库中,log4j的强大的可扩展性支持了这一点,以下就是具体的实现. 关键词:log,log4j,日志,Java,DB,数据库,slf4j 前提:已经配置好slf4j.log4j,能正常的往文件或控制台写日志. 需求:将日志

logback日志写入数据库(mysql)配置

如题  建议将日志级别设置为ERROR.这样可以避免存储过多的数据到数据中. 1  logback 配置文件(如下) <?xml version="1.0" encoding="UTF-8" ?> <configuration scan="true"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender&q

如何借助log4j把日志写入数据库中

log4j是一个优秀的开源日志记录项目,我们不仅可以对输出的日志的格式自定义,还可以自己定义日志输出的目的地,比如:屏幕,文本文件,数据 库,甚至能通过socket输出.本节使用MySQL数据库主要讲述如何将日志信息输入到数据库中. 用log4j将日志写入数据库主要用到是log4j包下的JDBCAppender类,它提供了将日志信息异步写入数据的功能,我们可以直接使用这个类将我 们的日志信息写入数据库:也可以扩展JDBCAppender类,就是将JDBCAppender类作为基类进行二次开发获得

【.NET】Log4net将操作日志写入数据库

配置文件可以参考上篇博文[.NET]log4net配置文件解析. 先在Global.aspx中添加这样一句代码,来读取配置文件,初始化log4net的环境. public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { log4net.Config.XmlConfigurator.Configure(); } 新建一个Log文件夹,

用log4j将日志写入数据库

以下为log4j中的配置参数: %m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该log信息耗费的毫秒数 %t 输出产生该日志事件的线程名: %n 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n" %d 输出日志时间的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2008年

Log4NET将日志写入数据库中

Apache log4net? Config Examples Overview This document presents example configurations for the built-in appenders. These configurations are designed to work with thelog4net.Config.DOMConfigurator and the log4net.Repository.Hierarchy.Hierarchy. These

Log4j写入数据库详解

log4j是一个优秀的开源日志记录项目,我们不仅可以对输出的日志的格式自定义,还可以自己定义日志输出的目的地,比如:屏幕,文本文件,数据库,甚至能通过socket输出.本节主要讲述如何将日志信息输入到数据库(可以插入任何数据库,在此主要以MSSQL为例进行详解).用log4j将日志写入数据库主要用到是log4j包下的JDBCAppender类,它提供了将日志信息异步写入数据的功能,我们可以直接使用这个类将我们的日志信息写入数据库:也可以扩展JDBCAppender类,就是将JDBCAppende

使用Microsoft EnterpriseLibrary(微软企业库)日志组件把系统日志写入数据库和xml文件

这里只是说明在项目中如何配置使用微软企业库的日志组件,对数据库方面的配置请参考其他资料. 1.在项目中添加Microsoft.Practices.EnterpriseLibrary.Data.dll.Microsoft.Practices.EnterpriseLibrary.Logging.dll.Microsoft.Practices.EnterpriseLibrary.Logging.Database.dll这三个引用. 2.打开EnterpriseLibrary的配置工具EntLibCon

(OAF)jdeveloper集成log4j并将日志输出到指定文件并写入数据库

参考: How to configure Log4j in JDev 11g Ever wanted to use log4j in your adf project ? Well though Oracle doesn't recommends the use of log4j, i say its purely your choice to use it or not. So how do we configure log4j in adf  ? Pretty simple..just fo