问题与解决
如果在你的应用程序启动后,却在 spy.log 文件中发现了如下的提示信息,那就是驱动程序加载先后的问题了。
<你的程序的数据库驱动名称> is a real driver in spy.properties, but it has
been loaded before p6spy. p6spy will not wrap these connections. Either
prevent the driver from loading, or try setting'deregisterdrivers' to true in
spy.properties
|
请把 spy.properties 配置文件里的 deregisterdrivers=false
改为 deregisterdrivers=true
,重新运行即可。
这是因为有些应用系统中会先于 P6Spy 加载了真正的数据库的驱动程序,导致 P6Spy 无法监控到,设置 deregisterdrivers
为 true
,是显式地把真正的数据库的驱动程序进行反注册掉,而采用 P6Spy 的驱动程序。
下表列出了 spy.properties 配置文件中的各配置项的名称、默认值及其意义和相关注意事项:
配置项名称
默认值
配置项意义及相关注意事项
module.log |
com.p6spy.engine.logging. P6LogFactory |
用来拦截和记录任务应用程序的 JDBC 语句。若无配置或注释掉则无此功能。 |
module.outage |
com.p6spy.engine.outage. P6OutageFactory |
检测和记录执行时间比较长的 SQL 语句。若无配置或注释掉则无此功能。 |
realdriver |
|
真正的应用系统使用的数据库驱动程序名称。 |
realdriver2 |
|
真正的应用系统使用的第二种备用数据库驱动程序名称。 |
realdriver3 |
|
真正的应用系统使用的第三种备用数据库驱动程序名称。 |
deregisterdrivers |
false |
显示地把真正的数据库的驱动程序进行反注册掉。取值 true| false |
executionthreshold |
|
P6Log 模块执行时间设置,整数值 (以毫秒为单位),只有当超过这个时间才进行记录 Log。 |
outagedetection |
false |
P6Outage 模块是否记录较长时间运行的语句。取值 true| false |
outagedetectioninterval |
|
P6Outage 模块执行时间设置,整数值 (以秒为单位)),只有当超过这个时间才进行记录 Log。 |
filter |
false |
是否过滤 Log,取值 true| false |
include |
|
过滤 Log 时所包含的表名列表,以逗号分隔。 |
exclude |
|
过滤 Log 时所排除的表名列表,以逗号分隔。 |
sqlexpression |
|
过滤 Log 时的 SQL 表达式名称 |
autoflush |
true |
是否自动刷新。取值 true| false |
dateformat |
|
设置时间的格式,也就是用 Java 的 SimpleDateFormat 程序。 |
includecategories |
|
显示指定过滤 Log 时包含的分类列表,取值为 error,info,batch,debug,statement,commit,rollback,result 的各种组合。 |
excludecategories |
|
显示指定过滤 Log 时排队的分类列表,取值同上。 |
stringmatcher |
|
使用正则表达式来过滤 Log,取值为 com.p6spy.engine.common.GnuRegexMatcher 和 com.p6spy.engine.common.JakartaRegexMatcher |
stacktrace |
false |
打印堆栈跟踪信息。取值 true| false |
stacktraceclass |
|
如果 stacktrace=true,则可以指定具体的类名来进行过滤。 |
reloadproperties |
false |
监测属性配置文件是否进行重新加载。取值 true| false |
reloadpropertiesinterval |
60 |
属性配置文件重新加载的时间间隔,以秒为单位。 |
useprefix |
false |
是否加上前缀,设置为 true,会加上 p6spy: 作为前缀。取值 true| false |
appender |
com.p6spy.engine.logging. appender.FileLogger |
指定 Log 的 appender,与 Log4J 有点同义,取值:com.p6spy.engine.logging.appender.Log4jLogger、com.p6spy.engine.logging.appender.StdoutLogger 和 com.p6spy.engine.logging.appender.FileLogger |
logfile |
spy.log |
指定 Log 的文件名,任何适于操作系统的文件。 |
append |
true |
指定是否每次是增加 Log,设置为 false 则每次都会先进行清空。取值 true| false |
log4j.appender.STDOUT |
org.apache.log4j.ConsoleAppender |
当 appender 为 log4j 时采用的配置,配置如同 Log4J 的相关配置。 |
log4j.appender.STDOUT.layout |
org.apache.log4j.PatternLayout |
同上 |
log4j.appender.STDOUT. layout.ConversionPattern |
p6spy - %m%n |
同上 |
log4j.logger.p6spy |
INFO,STDOUT |
Log 级别的设置,取值同 Log4J 的配置 |
realdatasource |
|
设置数据源 DataSource 的配置名称。 |
realdatasourceclass |
|
设置数据源 DataSource 的类的全称。 |
realdatasourceproperties |
|
设置数据源 DataSource 的属性,以分号分隔。 |
jndicontextfactory |
|
设置 JNDI 数据源的 NamingContextFactory。 |
jndicontextproviderurl |
|
设置 JNDI 数据源的提供者的 URL。 |
jndicontextcustom |
|
设置 JNDI 数据源的一些定制信息,以分号分隔。 |
分享到:
相关推荐
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...
- 配置`URL`属性,保持原有数据库连接URL格式,但添加P6Spy特定的前缀,例如`jdbc:p6spy:mysql://localhost:3306/mydb`。 ### 3. 配置`spy.properties` P6Spy的配置主要通过`spy.properties`文件完成,该文件应...
1. **集成p6spy**: 将p6spy的JAR文件添加到项目类路径中,通常是在应用服务器的lib目录下或者Maven/Gradle的依赖管理中。 2. **配置**:尽管已经简化,但可能仍需配置相关属性,如日志文件路径、日志格式等,这可能...
设置`jdbc.url`属性,使其包含P6Spy的特定参数,例如: ``` jdbc.url=jdbc:p6spy:mysql://localhost:3306/mydb?spylib=path/to/p6spy.jar ``` 3. **配置日志**:P6Spy使用自己的日志框架,所以我们需要在应用...
4. 根据需要,可能还需要配置P6Spy识别实际数据库驱动的方式,这通常通过`driverlist`属性完成。 同时,将SQL Profiler和P6Spy结合使用,可以提供更全面的数据库性能监控视图。在Java应用中,P6Spy可以捕获和记录...
- **日志格式**:P6Spy 允许自定义日志格式,通过 spy.properties 文件中的 `format` 属性指定。 - **日志级别**:可以调整 `logLevel` 属性来控制记录的 SQL 事件级别,如信息、警告或错误。 - **其他配置**:...
- P6Spy 的主要配置文件是 `spy.properties`。在解压的 P6Spy 包中,找到此文件并根据你的数据库配置进行修改。 - **代理数据库连接**:设置 `driver=com.p6spy.engine.spy.P6SpyDriver`,告诉 P6Spy 使用其自己的...
同时,确保你的`url`属性使用P6Spy的特殊格式,例如`jdbc:p6spy:mysql://localhost:3306/mydb?autoReconnect=true`,这里的`jdbc:p6spy:`就是P6Spy的JDBC URL前缀。 5. **启动并测试**:重新启动WildFly服务器,...
- 更新数据源配置,将P6spy的JDBC驱动类名添加到`driverClassName`属性中。 3. **集成SqlProfiler** - 下载并安装SqlProfiler客户端。 - 连接到你的数据库服务器,启动性能监视会话。 - 通过P6spy收集的日志...
3. **配置`spy.properties`**:这个文件用于配置p6spy的行为,例如日志级别、日志文件位置、SQL语句的格式等。 4. **启用Hibernate SQL日志**:在Hibernate的配置中,你需要开启SQL语句的日志输出,通常是通过设置`...
2、针对日志文件,由于此文件记录量,增加一个log4j中的DailyRollingFileLogger,每天做日志,并且增加一个属性在配置文件中maxfilesize=500(kb),超过此文件的最大值,系统重新生成一个文件。输入的日志格式采用...
- `pom.xml`: Maven项目的配置文件,定义了项目依赖,包括Spring Boot Starter Web、Druid和P6Spy等。 在`SpringBootStudy`中,我们可能看到以下关键文件: - `pom.xml`:确保包含了Spring Boot starter web、Druid...
通过配置p6spy的属性文件来实现SQL日志的记录。 综上所述,在Spring Boot项目中集成Hibernate、Druid和p6spy可以帮助开发者更加高效地进行数据库操作,同时也能够更好地监控和调试应用程序。通过对这些技术的学习...
物超所值 系统架构:s2sh + extjs4, 配置我采用传统的xml配置,并没有使用注解的形式,是因为我考虑到xml... skyline\coding\build.properties 为ant属性文件 build.xml 为发布使用的ant配置文件 请按照实际环境来部署
值得注意的是,部分依赖如Druid数据库连接池和P6Spy SQL查询日志记录器的版本注释为“升级失败,下次再升”,表明这些依赖可能在尝试升级过程中遇到了问题,未来计划再次尝试升级。 此配置还包含了一些未升级的依赖...
例如,`initial-size`等属性没有与`druid:`对齐,SpringBoot会无法识别这些配置,从而引发异常。 在Druid的配置中,`filters`用于开启监控和拦截器,如stat用于监控统计,wall用于防止SQL注入,log4j用于日志记录。...
<property name="JDBC.Driver" value="com.p6spy.engine.spy.P6SpyDriver"/> <!-- 连接池配置 --> ``` 这里配置了数据库驱动、连接URL、用户名和密码,还包含了连接池的相关配置,如最大活跃连接数、最大...
- 使用第三方工具如P6Spy来增强JDBC调试能力。 #### 四、官方文档与最佳实践 官方文档提供了大量的优化指南和最佳实践,例如: - [Weblogic官方文档](http://edocs.weblogic) 通过参考官方文档和上述实践,可以...
JAVA属性文件中的配置。 守护程序接口将作为服务与jsvc一起运行。HTTP服务器具有多个Web应用程序,单个端口,多个主机名的Immutant Web服务器。 路由: metosin/reitit 。 页面渲染:打hiccup 。前端带Shadow CLJS...