如何把p6spy配置到log4j 配置

我们在项目中有时候需要跟踪记录sql的执行情况,有时候跟踪的日志中的sql是预编译之后的,参数是带问号的,所以我们需要跟踪到真正的sql执行语句,P6spy正好可以满足我们的需要。先来看一下P6Spy的介绍:
P6Spy&是针对数据库访问操作的动态监测框架(为开源项目,github地址为)它使得数据库数据可无缝截取和操纵,而不必对现有应用程序的代码作任何修改。P6Spy分发包包括P6Log,它是一个可记录任何Java应用程序的所有JDBC事务的应用程序。其配置完成使用时,可以进行数据访问性能的监测。下面我们来看一下怎么在项目中使用P6Spy。
引入Maven依赖
首先我们在项目中引入P6Spy的相关依赖。
&dependency&
&groupId&p6spy&/groupId&
&artifactId&p6spy&/artifactId&
&version&2.3.1&/version&
&/dependency&
新增spy.properties
接下来我们需要在项目的classpath目录下增加spy.properties文件。其实这个文件P6Spy为我们提供了,但是我们可能还需要修改其中的一些东西。我现在配置的内容如下所示:
module.log=com.p6spy.engine.logging.P6LogFactory
driverlist=com.mysql.jdbc.Driver
deregisterdrivers=true
outagedetection=false
filter=false
autoflush = true
excludecategories=info,debug,result,batch
append=true
appender=com.p6spy.engine.spy.appender.Slf4JLogger
log4j.logger.p6spy=INFO,STDOUT,F
#配置p6spy的日志不重复打印
log4j.additivity.p6spy=false
logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
因为我的项目中配置了log4j.properties,所以这里我没有怎么配置日志输出相关的东西(日志相关的配置项在原来)。
替换原来的数据库驱动
接着我们需要做的是替换原来的数据库驱动。我的数据库用的是MySQL所以我这里做的修改是这样的(其他的数据库照样画葫芦)。
原来的数据库驱动:
&property name=&driverClassName& value=&com.mysql.jdbc.Driver&/&修改之后的驱动:&property name=&driverClassName& value=&com.p6spy.engine.spy.P6SpyDriver&/&原来的URL:
&property name=&url& value=&jdbc:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=UTF-8&&&/property&修改之后的URL:
&property name=&url&
value=&jdbc:p6spy:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=UTF-8&&&/property&OK,经过这三步,我们的P6Spy就可以在项目中生效了。最后我们看一下效果:
我在页面上进行了一个提交的操作,这个操作会向数据库中插入一条数据。我们看一下P6Spy跟踪到的sql语句:
日志文件中:
P6Spy跟踪到了真正执行的sql语句。
我的log4j.properties的内容
#Console Log
log4j.rootLogger=info, console, file
# Write to Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=INFO
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F:%L): %m%n
#Write to File
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=D:/log/provider.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F:%L): %m%nP6Spy的一些配置说明:
#MODULE p6spy提供了两种模块进行日志记录:log和outage,两者有不同的功能,配置参数也有专属,但是它们也共享一些配置参数,如哪些表被记录,日志文件名称和地址,是否显示sql执行轨迹等。
#log用来拦截和记录任何使用jdbc的应用的数据库声明日志,默认为开启。
#outage主要是用来最低化log所带来的性能问题,只记录超过一定时间的执行语句,默认为关闭。
module.log=com.p6spy.engine.logging.P6LogFactory
#module.outage=com.p6spy.engine.outage.P6OutageFactory
#实际的数据库驱动,真正的数据库驱动
realdriver=com.mysql.jdbc.Driver
#实际的数据库驱动备份,当前面的数据库驱动不对时,顺序查找下一驱动,直到找到合适为止,默认为空。
realdriver2=
realdriver3=
#无效化已注册的驱动,如果在其他地方已经定义好了真正的数据库驱动,那么p6spy driver就不会生效,也就不能起到作用,所以需#要把此选项置为true。
deregisterdrivers=true
#log模块专属的参数,当log模块开启时,如果执行语句超出这个时间(单位为毫秒),才能被记录在文件中,可以重新被载入,默认为0。
executionthreshold=
#outage专属的参数,当outage模块开启时,outagedetection为true时,会根据outagedetectioninterval(单位为秒)的大小, 间隔的去捕获执行语句,一般用来捕获长时间执行的语句。。
outagedetection=false
outagedetectioninterval=
#以下参数是公共的属性,log和outage都可以公用的参数过滤器开关,是否根据参数过滤一些记录内容
filter=false
#当过滤器开启时,需要记录的表,默认为都记录
#当过滤器开启时,不需要记录的表,默认为都记录
#当过滤器开启时,根据sql表达式过滤
sqlexpression =
#是否自动刷新
#输出的日志文件的日期格式,也就是用Java的SimpleDateFormat程序。
dateformat=
#定义包含的日志级别,当日志级别属于此类型时,才能被记录,属性值有error, info, batch, debug, statement, commit, rollback 和result
includecategories=
#定义不包含的日志级别,当日志级别属于此类型时,不会被记录
excludecategories=
#使用正则表达式来过滤 Log,匹配时才会被记录,例如: #stringmatcher=com.mon.GnuRegexMatcher #stringmatcher=com.mon.JakartaRegexMatcher
stringmatcher=
#是否对每一SQL的执行语句进行打印堆栈跟踪信息,通常在进行长时间执行SQL的情况下打开进行监控。
stacktrace=false
#当上一轨迹开关打开时,可以指定具体的类名来进行过滤。
stacktraceclass =
#监测属性配置文件是否进行重新加载,一般应用服务器在启动时进行加载一次就够了。
reloadproperties=false
#当是否重新加载开关打开时,定义重新加载时间周期。
reloadpropertiesinterval = 60
#是否加上前缀,设置为 true,会加上 p6spy: 作为前缀
useprefix=false
#指定 Log 的 appender,与 Log4J 有点同义,取值:com.p6spy.engine.logging.appender.Log4jLogger com.p6spy.engine.logging.appender.StdoutLogger com.p6spy.engine.logging.appender.FileLogger
appender=com.p6spy.engine.logging.appender.FileLogger
#指定记录的日志文件名称和地址,根目录在应用服务器的发布端.如tomcat在%TOMCAT_HOME%/bin目录下。
logfile = log/spy11.log
#文件续载标识,在log的appender类型为FileLogger时,才生效,如果为true,则在生成的日志文件后面继续进行记录,否则删除之前的内容。
append=true
#类似与log4j的记录器的布局:
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=p6spy - #%m%n
另外还有和P6spy一起使用的图形界面的sql性能分析工具。具体的看这篇文章:监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用简介()
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:194527次
积分:2830
积分:2830
排名:第11937名
原创:102篇
评论:46条
阅读:19667
文章:13篇
阅读:39422
阅读:6696
(4)(15)(3)(1)(2)(3)(12)(9)(3)(7)(10)(4)(5)(9)(2)(3)(4)(2)(2)(3)(2)J2EE(89)
因为业务的需要,要将每次操作的数据库语句写到一个表中,才有了这篇文章。
在网上找了很多的资料,终于找到了p6spy这个东东。下面开始
1.找到p6spy 的jar包 --- p6spy.jar 添加到项目的lib下
2.将 p6spy.properties 这个文件也加到lib下
3.修改 p6spy.properties 文件,启用你所用的 realdriver,如对于 oracle 是 realdrive=oraclejdbc.driver.OacleDriver。
4.需要log4j的jar包 添加到项目的lib下面
5.修改 hibernate.cfg.xml文件
将&property name=&connection.driver_class&&
&com.microsoft.jdbc.sqlserver.SQLServerDriver&
&&&/property&
&property name=&connection.driver_class&&
& com.p6spy.engine.spy.P6SpyDriver
&&&/property&
6.修改spy.properties
realdriver=org.gjt.mm.mysql.Driver# 数据库驱动程序的名字&
appender=com.p6spy.engine.logging.appender.StdoutLogger
deregisterdrivers=false
log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender
log4j.appender.SQLPROFILER_CLIENT.RemoteHost=localhost
log4j.appender.SQLPROFILER_CLIENT.Port=4445
log4j.appender.SQLPROFILER_CLIENT.LocationInfo=true&
7.相关工具下载:
8.辅助日志分析工具:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:497104次
积分:8328
积分:8328
排名:第2191名
原创:268篇
转载:276篇
评论:72条
(1)(1)(2)(1)(2)(1)(1)(2)(1)(2)(2)(1)(11)(11)(4)(3)(4)(7)(1)(8)(11)(2)(3)(3)(3)(2)(26)(2)(6)(6)(5)(17)(5)(6)(8)(7)(16)(12)(4)(15)(6)(1)(2)(12)(22)(8)(5)(8)(8)(25)(6)(132)(110)用 p6spy 来观察 Java 程序中执行的所有 SQL 语句_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用 p6spy 来观察 Java 程序中执行的所有 SQL 语句
上传于|0|0|文档简介
&&java hibernate
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩19页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢1792人阅读
因为业务的需要,要将每次操作的数据库语句写到一个表中,才有了这篇文章。
在网上找了很多的资料,终于找到了p6spy这个东东。下面开始
1.找到p6spy 的jar包 ---
p6spy.jar 添加到项目的lib下
2.将 p6spy.properties 这个文件也加到lib下
3.修改 p6spy.properties 文件,启用你所用的 realdriver,如对于 oracle 是 realdrive=oraclejdbc.driver.OacleDriver。
4.需要log4j的jar包 添加到项目的lib下面
5.修改 hibernate.cfg.xml文件
将&property name=&connection.driver_class&&
&com.microsoft.jdbc.sqlserver.SQLServerDriver&
&&&/property&
&property name=&connection.driver_class&&
com.p6spy.engine.spy.P6SpyDriver
&&&/property&
6.修改spy.properties
realdriver=org.gjt.mm.mysql.Driver# 数据库驱动程序的名字
appender=com.p6spy.engine.logging.appender.StdoutLogger
7.相关工具下载:
8.辅助日志分析工具:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1922857次
积分:22971
积分:22971
排名:第269名
原创:434篇
转载:242篇
评论:415条
(1)(1)(2)(1)(3)(9)(1)(2)(4)(5)(1)(5)(4)(5)(1)(8)(1)(6)(1)(2)(3)(1)(3)(3)(1)(3)(3)(1)(1)(6)(7)(4)(5)(7)(9)(4)(2)(10)(10)(15)(5)(7)(4)(14)(10)(5)(1)(2)(3)(2)(2)(1)(1)(10)(9)(1)(9)(7)(2)(28)(1)(18)(13)(4)(11)(10)(5)(2)(9)(2)(5)(7)(6)(5)(19)(39)(40)(43)(35)(21)(10)(19)(5)(15)(34)(17)

我要回帖

更多关于 log4j.xml配置详解 的文章

 

随机推荐