使用hibernate 3 + p6spy+ log4j 写日志文件(一)

本文介绍如何通过P6Spy工具记录并分析SQL语句。主要内容包括:将P6Spy集成到项目中,配置相关属性以适配不同数据库,以及设置日志记录方式等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为业务的需要,要将每次操作的数据库语句写到一个表中,才有了这篇文章。

在网上找了很多的资料,终于找到了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.相关工具下载:
p6spy:   http://heanet.dl.sourceforge.net/sourceforge/p6spy/p6spy-install.zip
http://www.p6spy.com/download.html
8.辅助日志分析工具:
http://heanet.dl.sourceforge.net/sourceforge/sqlprofiler/sqlprofiler-0.3-bin.zip
http://www.jahia.org/jahia/page377.html

可以使用log4j的日志输出方式,将p6spy输出的日志也输出到同个文件中。具体操作步骤如下: 1. 在pom.xml中引入p6spylog4j的依赖: ```xml <!-- p6spy --> <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> ``` 2. 配置p6spy,在application.properties中添加以下配置: ```properties # p6spy spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root # p6spy输出配置 spy.properties=spy.properties ``` 在项目根目录下创建spy.properties文件,添加以下配置: ```properties # 输出日志到控制台 appender=com.p6spy.engine.spy.appender.StdoutLogger # 输出日志到文件 # appender=com.p6spy.engine.spy.appender.FileLogger # 文件路径,根据实际情况修改 logFile=log/p6spy.log # 日志输出格式 logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat ``` 3. 配置log4j,在log4j.properties文件中添加以下配置: ```properties # 输出日志到控制台 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %m%n # 输出日志到文件 log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=log/all.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %m%n # p6spy输出配置 log4j.logger.p6spy=INFO, file ``` 其中,log4j.logger.p6spy指定了p6spy输出的日志级别和输出方式,这里配置为INFO级别,输出到file这个appender中。 4. 测试,在代码中添加如下语句: ```java logger.debug("debug log"); logger.info("info log"); logger.warn("warn log"); logger.error("error log"); ``` 启动项目后,可以在log/all.log文件中看到所有日志的输出,包括p6spy的SQL执行日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值