怎样借助log4j把日志写入数据库中
用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 。
怎样借助log4j把日志写入数据库中的更多相关文章
- log4j输出日志到数据库中
1.log4j配置 ###----------------- appender:DATABASE_LOG -----------------#指定输出日志的等级和日志输出范围log4j.logger. ...
- 用log4j将日志写入数据库
以下为log4j中的配置参数: %m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该log信息耗费的毫秒数 %t 输出产 ...
- 使用log4j让日志写入数据库
之前做的一个项目有这么个要求,在日志管理系统里,需要将某些日志信息存储到数据库里,供用户.管理员查看分析.因此我就花了点时间搞了一下这一功能,各位请看. 摘要:我们知道log4j能提供强大的可配置的记 ...
- 使用log4j将日志写入数据库并发送邮件
参考: 快速了解Log4J 1.log4j的初始配置 参考该问的配置即可完整的实现写入数据库及发送邮件的功能 a.写入数据库需要配置相应的jar包,数据库类型不同,请使用指定的数据库配置,该文仅限于o ...
- logback日志写入数据库(mysql)配置
如题 建议将日志级别设置为ERROR.这样可以避免存储过多的数据到数据中. 1 logback 配置文件(如下) <?xml version="1.0" encoding ...
- mySql---logback日志写入数据库(mysql)配置
如题 建议将日志级别设置为ERROR.这样可以避免存储过多的数据到数据中. 1 logback 配置文件(如下) <?xml version="1.0" encoding ...
- 解决tomcat下面部署多个项目log4j的日志输出会集中输出到一个项目中的问题
在一次项目上线后,发现了一个奇怪的问题,经过对源码的阅读调试终于解决,具体经过是这样的: 问题描述:tomcat7下面部署多个项目,log4j的日志输出会集中输出到一个项目中,就算配置了日志文件的绝对 ...
- Log4Net的应用教程之保存日志到数据库中
关于Log4Net的应用,网上有很多教程,但大多数都是拷贝复制,有些按照他的代码来,运行起来发现也出不来效果,但是Log4net的作用实在是非常大的,或者这里说的不对,应该说系统的日志功能是很重要的也 ...
- 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中。需要对提交的信息进行修改,信息填入不能为空,为空则则有提示。
jsp结合SQLSERVER向数据库中的表添加图书信息. 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中.需要对提交的信息进行修改,信息填入不 ...
随机推荐
- node03--http
form.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- centos7 安装swftools Apache_OpenOffice
centos7 yum -y install wget wget http://www.swftools.org/swftools-0.9.2.tar.gz tar -xf swftools-.tar ...
- C语言基础-第三章
C语句和数据输入/输出(函数) 1.printf();输出函数 2.getch();输入函数 3.scanf();格式输入 4.puts();字符串输出 5.gets();字符串输入
- pandas学习系列(一):时间序列
最近参加了天池的一个机场航空人流量预测大赛,需要用时间序列来预测,因此开始使用python的pandas库 发现pandas库功能的确很强大,因此在这记录我的pandas学习之路. # -*- cod ...
- 使用HANDLECOLLISIONS的几个场景
使用HANDLECOLLISIONS的几个场景: 1.target丢失delete记录(missing delete),忽略该问题并不记录到discardfile 2.target丢失update记录 ...
- python(2) 图像通道,几何变换,裁剪
一.图像通道 1.彩色图像转灰度图 from PIL import Image import matplotlib.pyplot as plt img=Image.open('d:/ex.jpg') ...
- [NOI2010]海拔 平面图转对偶图 最小割
题解: 首先,我们不难猜到高度只有 $0$ 或 $1$ 两种可能,而且高度为 0 的地区组成一个联通块,高度为 1 的地区组成一个联通块.只有这样,人们所耗费的体力才是最小的.得出这个结论,题目就成了 ...
- Unity Shader实现各种进度条
1.圆形进度条shader Shader "ProgressBar360" { Properties { _BGTex("Background Texture" ...
- java回调方法、钩子方法以及模板方法模式
在面向对象的语言中,回调则是通过接口或抽象类来实现的,我们把实现这种接口的类称为回调类,回调类的对象称为回调对象,其处理事件的方法叫做回调方法.(摘自百度百科) 那么通过上面那句话将百度百科中的&qu ...
- ArcGIS api for javascript——地理处理任务-服务区域任务
描述 本例展示了如何发送一些输入值到ArcGIS Server上的GIS模型并获得结果反馈给web应用.本例中,模型计算自在地图上单击点起始的驱动时间多边形. 例如,这个分析类型可用于想要知道多少人生 ...