log4j是一个优秀的开源日志记录项目,我们不仅可以对输出的日志的格式自定义,还可以自己定义日志输出的目的地,比如:屏幕,文本文件,数据 库,甚至能通过socket输出。本节使用MySQL数据库主要讲述如何将日志信息输入到数据库中。
        用log4j将日志写入数据库主要用到是log4j包下的JDBCAppender类,它提供了将日志信息异步写入数据的功能,我们可以直接使用这个类将我 们的日志信息写入数据库;也可以扩展JDBCAppender类,就是将JDBCAppender类作为基类进行二次开发获得一个新的具有所有JDBCAppender类属性和行为的子类。
        下面可以直接使用log4j包下的JDBCAppender类,通过一个实例来讲解log4j是如何将日志信息写入数据库的:
        需求:我们在软件开发的过程中需要将调试信息、操作信息等记录下来,以便后面的审计,这些日志信息包括用户ID、用户姓名、操作类、路径、方法、操作时间、日志信息。

设计思想:我们采用JDBCAppender类直接将日志信息插入数据库,所以只需要在配置文件中配置此类就可以;要获得用户信息需要用过滤器来实现(假如不需要用户的信息,就不需要设计过滤器,其实大部分情况下都是需要这些用户信息,尤其是在web应用开发中)。在日志信息中获得用户信息,就是通过过滤器的request或session对象来实现的,可是用户信息怎样传到log4j呢,log4j为我们提供MDC这一log4j中非常有用的类,它用于存储应用程序的上下文信息(context Infomation),从而便于在log中使用这些上下文信息。MDC内部使用了类似map的机制来存储信息,上下文信息也是每个线程独立地储存,所不同的是信息都是以它们的key值存储在“map”中。相对应的方法为:“MDC.put(key, value); MDC.remove(key); MDC.get(key); ”。在配置PatternLayout的时候使用:%x{key}来输出对应的value)。有了MDC,我们可以在过滤器中先获得用户信息,再用MDC.Put(“key”)方法,log在执行sql语句时通过%x{key}来输出对应的value 。

下载JavaWeb项目

如何借助log4j把日志写入数据库中相关推荐

  1. Java异常持久化,Log4j进行日志的数据库持久化,说SQL语法异常。

    Log4j进行日志的数据库持久化,说SQL语法错误... 在properties的配置中.... log4j.appender.db = org.apache.log4j.jdbc.JDBCAppen ...

  2. 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中。需要对提交的信息进行修改,信息填入不能为空,为空则则有提示。

    jsp结合SQLSERVER向数据库中的表添加图书信息. 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中.需要对提交的信息进行修改,信息填入不 ...

  3. Qt读取界面的时间dateEdit,并将时间写入数据库中

    在UI界面中,利用dateEdit获取时间信息,如下图所示的界面: 获得界面时间 QDate date = ui.dateEdit->date();                        ...

  4. log4j写入mysql数据库_log4j日志写入数据库

    # log4j写入数据库 ### 前言 ----------------------------- log4j是写入日志到控制台和文件很常见,但是写入到数据库不多见. 做性能测试写入到数据库,统计方便 ...

  5. log4j 新建日志 重启_Java中log4j控制写入日志开关

    本文原文出自我的个人网站[思考者日记]原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. 上篇说到tomcat jndi(连接池)的使用方法,这次的项目里还使用到了一 ...

  6. 【原创文章】PHP+MySQL 创建表单并将表单数据写入数据库中。

    前言     因兴趣做一个静态网页需要涉及到内容存储,因此有了本文内容.本文涉及到的都是些PHP+MySQL的基础知识.仅个人做记录,文章内容未经允许禁止转载! 一.网站环境 宝塔面板,方便操作. N ...

  7. ELK系列(四)、Logstash读取nginx日志写入ES中

    前面讲了ELK的部署以及Logstash的插件的安装方式,本篇就介绍一下如何使用Logstash读取nginx的日志,并写入ES中,通过Kibana分析. ELK系列(一).安装ElasticSear ...

  8. ELK学习--将自定义nginx日志写入es中并通过kibana展示为例

    今天只是记录总体思路,具体细节不展开,毕竟东西太多 学习目的 业务发展越来越庞大,服务器越来越多 各种访问日志.应用日志.错误日志量越来越多,导致运维人员无法很好的去管理日志 开发人员排查问题,需要到 ...

  9. 利用slf4j+log4j将日志写入指定的文件中

    主要实现的是可以从后台传入文件名,写入日志到指定的文件中.(jar包在链接中http://download.csdn.net/download/u010924720/10150019) 代码如下: p ...

  10. python读取数据库中指定内容_python如何用正则表达式读取对应字段写入数据库中?...

    我用*/5****/unibss/pkgchc4/puchc01/top-n1|head-n81>top.txt这个crontab的定时任务将top信息前8行写入top文本中内容如下:^[[m^ ...

最新文章

  1. Python一些特殊用法(map、reduce、filter、lambda、列表推导式等)
  2. boost::endian::order的用法测试程序
  3. 微软云计算动态登陆“MSDN论坛好帮手”
  4. Dnslog在SQL注入中的利用
  5. ImagesSprite V1.1.1 Beta发布
  6. linux组成,Linux学习笔记之Linux组成及初识
  7. java applet socket_Java swing applet中使用的套接字
  8. 从0到千万DAU,这5年闲鱼架构如何演进?
  9. 编写一个脚本判断某个用户是否处在活动模式_使用 TypeScript 编写爬虫
  10. Zdal分库分表中间件介绍
  11. elasticsearch aggregations_Elasticsearch聚合的嵌套桶如何排序
  12. L3-028 森森旅游 (30 分)-PAT 团体程序设计天梯赛 GPLT
  13. golang解决TCP粘包问题
  14. html 字体最小多少,浏览器最小显示12px字体的解决方法
  15. Windows环境下载安装Redis图文教程(亲测有效)
  16. oracle英文日期转换为中文,excel中文日期与英文日期如何转换
  17. 西南科技大学 Python程序设计 班长选举
  18. 分布式事务-常见解决方案
  19. 零代码在线绘制GO富集结果GOcircle图
  20. 关于偏差-方差的分析

热门文章

  1. ASP.NET MVC Json() 处理大数据异常解决方法 json MaxJsonLength
  2. 近现代科学三大发现:证实佛法真实不虚
  3. Remoting例子-使用配置文件
  4. [转帖]javascript做浮点数运算精确问题
  5. Docker之数据卷和数据卷容器
  6. VisualStudio 2013开发Office插件
  7. 避免内存泄露及内存的规范化使用
  8. 6.凤凰架构:构建可靠的大型分布式系统 --- 分布式共识
  9. 6.携程架构实践 --- 数据库
  10. 155.PHP中“==”运算符的安全问题