`
linken
  • 浏览: 4537 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用log4j把日志异步写入数据库中

阅读更多
在src文件夹下面创建一个log4j.properties 文件,用来设置数据库的连接。

log4j.logger.my_work=INFO,db
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.BufferSize=10
log4j.appender.db.URL=jdbc:mysql:///test 
log4j.appender.db.driver=com.mysql.jdbc.Driver
log4j.appender.db.user=linken
log4j.appender.db.password=linken
log4j.appender.db.sql=[color=red]INSERT INTO MY_LOG (RECORDE_DATE,WHICHE_CLASS,WHICH_METHOD,I_DO) VALUES('%d{yyyy-MM-dd HH:mm:ss}','%C','%M','%m')[/color]
log4j.appender.db.layout=org.apache.log4j.PatternLayout


一般来说BufferSize的值设置为10,利用log4j的缓存机制批量写入到数据库中,对系统没什么影响。

在方法的应用:
Log myDBLog = LogFactory.getLog("my_work");
分享到:
评论
1 楼 masterkey 2008-03-19  
BufferSize没什么作用,JDBCAppender

只是把用户输出的log现在一个ArrayList中保存,当其数量达到了BufferSize,才启动写日志。而且JDBCAppender还是每次都生成Connection,每一个Log还是单独写入,不是批量写入。

Log4J的数据库写入方式就是一个鸡肋,如果需要提高性能,首先,自己需要实现一个连接池。而且其还不支持addBatch,赫赫,如下是log4j源代码(JDBCAppender.java)
########################
  public void flushBuffer() {
    //Do the actual logging
    removes.ensureCapacity(buffer.size());
    for (Iterator i = buffer.iterator(); i.hasNext();) {
      try {
        LoggingEvent logEvent = (LoggingEvent)i.next();
    String sql = getLogStatement(logEvent);
    execute(sql);
        removes.add(logEvent);
      }
      catch (SQLException e) {
    errorHandler.error("Failed to excute sql", e,
   ErrorCode.FLUSH_FAILURE);
      }
    }
   
    // remove from the buffer any events that were reported
    buffer.removeAll(removes);
   
    // clear the buffer of reported events
    removes.clear();
  }
###########################

  protected void execute(String sql) throws SQLException {

    Connection con = null;
    Statement stmt = null;

    try {
        con = getConnection();

        stmt = con.createStatement();
        stmt.executeUpdate(sql);
    } catch (SQLException e) {
       if (stmt != null)
     stmt.close();
       throw e;
    }
    stmt.close();
    closeConnection(con);

    //System.out.println("Execute: " + sql);
  }

相关推荐

    Log4j写入数据库详解

    `JDBCAppender`利用JDBC技术将日志消息异步写入数据库表中。 ##### 1. 实现步骤: **步骤一:添加依赖** 确保项目中有log4j和commons-logging两个jar文件。如果使用的是Maven项目,可以在pom.xml文件中添加如下...

    使用log4j 记录日志到数据库

    这篇博客“使用log4j记录日志到数据库”将介绍如何配置和使用Log4j,以便将日志信息存储到数据库中,而非传统的文本文件。数据库存储的日志便于进行结构化查询,有助于进行长期的数据分析和管理。 首先,理解Log4j...

    log4j输出日志到数据库表中

    **标题解析:** "log4j输出日志到数据库表中" 指的是使用Log4j这个流行的Java日志框架,将日志记录存储在数据库的特定表中,而不是默认的文本文件或控制台。这通常是出于日志管理、分析和长期存储的需求。 **描述...

    log4j按功能保存日志

    在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入不同的文件,以便于后期分析、排查问题和监控系统状态。 1. **Log4j基本概念** - **Logger**: 日志记录器,是Log4...

    log4j日志jar包

    Log4j作为Apache软件基金会的一个开源项目,是Java世界中最流行、最广泛使用的日志框架之一。本文将详细探讨Log4j日志jar包的功能、使用方法以及其在实际项目中的重要性。 1. **Log4j的基本概念** Log4j是一个...

    log4j.zip 项目日志

    本文将围绕“log4j.zip”项目日志,详细介绍Log4j的基本概念、配置、使用方法以及优化策略。 一、Log4j简介 Log4j是由Apache软件基金会开发的一款开源日志组件,适用于Java平台。它的设计理念是提供一个灵活且高效...

    Log4j日志管理

    Log4j是Apache组织开发的一款Java日志框架,它在Java世界中被广泛使用,尤其在企业级应用中,因为其强大的功能、灵活性和高效性。Log4j提供了丰富的日志记录选项,允许开发者根据需求调整日志级别,输出调试信息,...

    log4j中文手册.pdf

    《log4j中文手册》是Java开发人员必备的参考资料,它详细介绍了log4j这个广泛使用的日志记录框架。Log4j是Apache软件基金会开发的一个开源项目,主要用于生成应用程序运行时的日志信息,帮助开发者进行调试、性能...

    log4j简单范例 日志文件是相对路径的

    Log4j是一款广泛使用的日志记录框架,尤其在Java应用程序中。它允许开发者灵活地控制日志信息的输出,提供了一种分级的日志记录机制,便于调试、性能分析和问题排查。这个“log4j简单范例 日志文件是相对路径的”...

    使用Log4j进行日志操作.zip_java 操作日志_java 日志_log4j_系统日志

    Log4j是Java编程语言中广泛使用的日志记录框架,由Apache软件基金会开发。它提供了一个灵活的日志系统,能够帮助开发者记录应用程序运行过程中的各种信息,从调试信息到严重错误,这对于系统的维护、故障排查以及...

    log4j依赖jar包

    Log4j是Java平台上广泛应用的日志记录框架,它为开发者提供了强大的日志处理能力,能够帮助调试、追踪代码中的问题,以及记录系统运行状态。在Java应用开发中,日志框架的选择至关重要,因为它直接影响到程序的可...

    log4j.zip和log4j.jar日志文档的处理

    Log4j是Apache组织开发的一款强大的Java日志记录框架,广泛应用于各种Java应用程序中,用于收集、管理和分析应用程序运行过程中的日志信息。这个压缩包`log4j.zip`包含了与Log4j相关的多个资源,旨在帮助用户学习和...

    log4j_jar包跟教程说明

    - Log4j允许开发者创建自定义的Appender和Layout来满足特定需求,如发送邮件、写入数据库等。 - Appender决定了日志信息的输出位置,而Layout则决定日志的显示格式。 6. **Log4j的最新版本:Log4j 2** - 随着...

    c# 读log (txt)写入数据库

    在IT行业中,日志文件(通常为txt格式)是记录...综上所述,通过C#实现读取log(txt)文件并写入数据库的过程,涉及文件I/O、日志解析、数据库操作等多个环节。在实际应用中,还需要根据具体需求进行相应的优化和调整。

    Java与log4j2整合mongoDB需要的jar包

    在Java开发过程中,为了实现日志管理,我们通常会使用如log4j2这样的日志框架。Log4j2是一个强大的、灵活的日志系统,它提供了丰富的配置选项和高性能的日志记录能力。当我们的应用程序需要将日志信息存储在数据库中...

    Apache的Log4J日志管理类库jar包

    2. **Appender**: Appender是Log4J中的输出组件,负责将日志信息输出到指定的位置,如控制台、文件、数据库或者网络。常见的Appender有ConsoleAppender(控制台输出)、FileAppender(文件输出)等。 3. **Layout**...

    apache-log4j-2.8.2-bin.tar

    4. **Appenders**:Appenders是Log4j中负责将日志写入目标(如控制台、文件、数据库等)的组件。2.8.2版本可能会引入新的Appender类型,或者对现有Appender进行性能优化。 5. **异步日志记录**:Log4j 2引入了异步...

    log4j2用户指南

    Log4j2 支持日志分离,即在一个应用程序中使用多个独立的日志记录配置: - **Separate ClassLoaders**:使用不同的类加载器隔离日志配置。 - **Separate Contexts**:每个配置使用独立的 LoggerContext。 #### 15....

    Spring MVC 框架 整合log4j

    7. **日志异步处理**:为了提高性能,可以考虑使用异步日志记录,例如使用`AsyncAppender`,这样不会阻塞主线程,而是将日志写入操作放入工作线程。 通过以上步骤,我们就可以成功地在Spring MVC应用中整合并使用...

    Java 日志记录 log4j 最简明教程

    此外,log4j还支持过滤、异步日志、自定义Appender和Layout等功能,可以根据实际需求进行配置和扩展。例如,你可以创建一个文件Appender,将日志写入文件,或者设置Filter来控制哪些日志消息会被记录。 总的来说,...

Global site tag (gtag.js) - Google Analytics