1. 把重要的业务日志异步批量写入数据库

配置文件示例:

log4j.logger.business=INFO,db

log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender

log4j.appender.db.BufferSize=10

log4j.appender.db.URL=jdbc:hsqldb:res:/hsqldb/bookstore

log4j.appender.db.driver=org.hsqldb.jdbcDriver

log4j.appender.db.user=sa

log4j.appender.db.password=

log4j.appender.db.sql=INSERT INTO SS_LOG4J_LOG (PRIORITY,LOGDATE,CLASS,METHOD,MSG) VALUES('%p','%d{yyyy-MM-dd HH:mm:ss}','%C','%M','%m')

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

log4j提供了简单灵活且不影响性能的机制, 将重要业务日志写入数据库,方便日后的查询:

1. 建立一个任意命名的日志记录表,在log4j.properties里设置连接参数,根据刚才建的表名列名,编写插入的语句。

2. BufferSize=10 这样的参数可以让日志异步批量写入,不会影响系统性能。

3. 业务日志log最好不要用原来的package结构,而是在项目里协调一个独立的名字,如business。

Log buzzLog = LogFactory.getLog("business");

4. 以上功能的演示代码在bookstore example 的OrderManager.java,测试代码在bookstore example的DBLogTest.java。

2.Spring 对log4j的几个增强

个人建议都不要使用。

1. 定时刷新log4j properties文件,无须重启服务器Apply 新的log4j设置。

虽然这是个J2EE Best Practice,但在Spring的JavaDoc里注明了不推荐用于生产环境,因为服务器重启的时候,那条watch thread 不会关闭。

2.将log4j.properties 文件放在WEB-INF/log4j.properties。

这种增强看不出有什么好处,而且如果放WEB-INF,测试的时候就不能输出log4j信息了,除非像Appfuse那样把WEB-INF也设为class path,不过这种设法只适用于Ant脚本的情况。

3. 通过设定{web.root} 这样的系统变量,将log文件放到项目的WEB-INF目录中

log4j.appender.logfile.File=${bookstore.root}/WEB-INF/logs/bookstore.log

这样做的好处是路径比较稳定,但如果是war式的部署,每次重新部署的时候就会把原来的log文件全部删掉,遇上jboss 这种不解压war包的应用服务器就更会出错,所以把log文件放WEB-INF/logs不是一个好的选择。

其实logfile路径的规则是,如果不是绝对路径,就以应用运行的目录作为相对路径的根目录。

所以我平时这样定义,一般就指向tomcat 和很多应用服务器的logs目录:

log4j.appender.logfile.File=../logs/bookstore.log

这样的缺点是,假设你把Tomcat/bin目录添加到了PATH变量的值中去,并喜欢从Windows开始菜单的运行框里输入"startup.bat"启动Tomcat,这时Log4j的日志就会被放到C:\Documents And Settings\logs目录中去。

3. 忽略某些类库框架的不必要的信息

控制第三方框架类库的logging level,可以避免满屏都是不重要的info,把真正重要的信息掩盖了。

# Changing the log level to DEBUG when debug

log4j.logger.org.springframework=WARN

# Changing the log level to DEBUG will display SQL Hibernate generated

log4j.logger.org.hibernate=WARN

log4j.logger.org.hibernate.SQL=ERROR

分享到:

2008-11-17 09:40

浏览 1982

评论

业务异步写mysql数据库_把重要的业务日志异步批量写入数据库相关推荐

  1. mysql 写不进数据库_求助,为何我的数据不能写入数据库

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为何我的数据不能写入数据库 数据库表的结构 phpMyAdmin SQL Dump -- version 4.6.4 -- https://www.php ...

  2. DataTable数据批量写入数据库三种方法比较

    DataTable数据批量写入数据库三种方法比较 标签: it 分类: C# 1)   insert循环插入: 2)   sqldataadapter.update(dataset,tablename ...

  3. idea中链接mysql查询_在Idea中编写Java程序连接查询Sqlite数据库

    1.使用SqliteSpy建立好数据库文件SqliteSpy运行界面 2.准备好一个空文件夹存放java工程和数据库文件,准备好数据库驱动jar包拷贝到文件夹中sqlite数据库文件和驱动 3.在Id ...

  4. mysql写入不了数据文件_求助,为何我的数据不能写入数据库

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为何我的数据不能写入数据库 数据库表的结构 phpMyAdmin SQL Dump -- version 4.6.4 -- https://www.php ...

  5. python processpoolexector 释放内存_一起看看python 中日志异步发送到远程服务器

    在python中使用日志最常用的方式就是在控制台和文件中输出日志了,logging模块也很好的提供的相应的类,使用起来也非常方便,但是有时我们可能会有一些需求,如还需要将日志发送到远端,或者直接写入数 ...

  6. 异步复位同步释放_简谈同步复位和异步复位

    简谈同步复位和异步复位 大侠们,江湖偌大,有缘相见,欢迎一叙,今天来聊一聊数字电路设计中的同步复位和异步复位. 谈到同步复位和异步复位,那咱们就不得不来聊一聊复位这个词了.在数字逻辑电路设计中,电路通 ...

  7. java流写入数据库_成为Java流大师–第4部分:数据库流

    java流写入数据库 SQL一直是一种声明性语言,而Java长期以来势在必行. Java流改变了游戏规则. 通过本动手文章编写您的方式,并学习如何使用Java流对RDBMS数据库执行声明性查询,而无需 ...

  8. sql重命名数据库_为什么要为SQL单元测试巧妙地命名数据库对象

    sql重命名数据库 This article is focussed on clever database object naming from both development and SQL un ...

  9. python如何使用本地数据库_使用Python在虚拟机上怎么连接本地数据库

    首先保证你的虚拟机和本机网络是处于同一网段的(一个局域网内), 然后明确数据库所占用的端口, 数据库账户密码就可以链接上了! python中把一个数据库对应的表封装成类就很好操作了! mysql的话: ...

最新文章

  1. Kubernetes 架构(下)【转】
  2. luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)
  3. mega_[MEGA DEAL]终极Android N开发套件(90%折扣)
  4. (3)websocket实现单聊和群聊
  5. Binary String Reconstruction CodeForces - 1352F(思维+构造)
  6. oracle用户密码已过期,oracle用户密码过期的处理方法
  7. @Resource注解使用详解
  8. geoserver三维_集团公司自主研发三维GIS平台产品——GeniusWorld 2.0 C版本发布
  9. [转载] python3.5 利用openpyxl模块来处理excel表
  10. poj 1753 Flip Game 高斯消元 异或方程组 求最值
  11. 「代码随想录」听说背包问题很难? 这篇总结篇来拯救你了
  12. php 仿安居客源码_python抓取安居客小区数据的程序代码
  13. idea配置有道词典
  14. 如何查看电脑所有连接过的wifi密码?
  15. LibreOJ - 10015 扩散
  16. Java多线程系列--“JUC锁”04之 公平锁(二)
  17. Linux software RAID 1 - root filesystem becomes read-only after a fault on one disk
  18. 电脑可以用的免费配音软件,语音识别,语音转文字,文字转语音。
  19. 使用Nordic芯片的手环OTA(android)
  20. Arcgis API For js 的离线部署

热门文章

  1. [导入]提高英语口语水平【网上资料整合】
  2. 今年最烂密码出炉,一秒钟就破解!你中枪了没?
  3. java: 未报告的异常错误java.lang.IllegalAccessException; 必须对其进行捕获或声明以便抛出
  4. 华为数通Hcia 1、通信基础
  5. 微信小程序中商品列表 不显示
  6. 苹果发布蓝牙耳机新固件,耳机Find My功能越发普及
  7. 基于微信小程序和安卓的课程考勤点名系统APP
  8. 个人电脑秒变服务器 简单几步,你的电脑也可以成为服务器 (内网穿透)
  9. tensorflow函数学习
  10. Centos7 Python3.6+Qt5.12.9+ PyQt5.12+Sip v5+QScintilla-2.10+Eric6