`

P6Spy应用:Hibernate显示真正SQL(2)

 
阅读更多

下表列出了 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 yyyy-MM-dd HH:mm:ss:SS 设置时间的格式,也就是用 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 数据源的一些定制信息,以分号分隔。

 

 

 

 

 

appender

Appenders allow you to specify where and how log information is output. Appenders are a flexible architecture allowing anyone to write their own output class for P6Spy. To use an appender, specify the classname of the appender to use. The current release comes with three options which are log4j, stdout, and logging to a CSV text file (default).

  • Using a CSV File— To output to a file, uncomment the FileLogger appender and specify a logfile and whether or not to append to the file or to clear the file each time:

    #appender=com.p6spy.engine.logging.appender.Log4jLogger
    #appender=com.p6spy.engine.logging.appender.StdoutLogger
    appender=com.p6spy.engine.logging.appender.FileLogger

    # name of logfile to use, note Windows users should make sure to use forward slashes in their pathname(e:/test/spy.log) (used for file logger only)
    logfile = spy.log

    # append to the p6spy log file. if this is set to false the
    # log file is truncated every time. (file logger only)
    append=true

  • Using StdOut— Uncomment the StdoutLogger as follows and all output will be sent to stdout in a CSV format:

    #appender=com.p6spy.engine.logging.appender.Log4jLogger
    appender=com.p6spy.engine.logging.appender.StdoutLogger
    #appender=com.p6spy.engine.logging.appender.FileLogger

  • Using Log4J— To output to log4j, make sure log4j is in your path, uncomment the log4j appender, and specify the desired log4j settings:

    appender=com.p6spy.engine.logging.appender.Log4jLogger
    #appender=com.p6spy.engine.logging.appender.StdoutLogger
    # appender=com.p6spy.engine.logging.appender.FileLogger

    #The following are for log4j logging only
    log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
    log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
    log4j.appender.STDOUT.layout.ConversionPattern=p6spy - %m%n

    #log4j.appender.CHAINSAW_CLIENT=org.apache.log4j.net.SocketAppender
    #log4j.appender.CHAINSAW_CLIENT.RemoteHost=localhost
    #log4j.appender.CHAINSAW_CLIENT.Port=4445
    #log4j.appender.CHAINSAW_CLIENT.LocationInfo=true

    log4j.logger.p6spy=INFO,STDOUT

    If for some reason log4j cannot be initialized, the logging will go to a file called  log4jaux.log .

 

dateformat

Setting a value for dateformat changes the date format value printed in the log file. No value prints the current time in milliseconds, a useful feature for parsing the log. The date format engine is Java's SimpleDateFormat class. Refer to the SimpleDateFormat class in the JavaDocs for information on setting this value.  An example follows:

dateformat=MM-dd-yy HH:mm:ss:SS

 

Log File Format

The log file format of  spy.log   follows:

current time|execution time|category|statement SQL String|effective SQL string

  • current time The current time is obtained through System.getCurrentTimeMillis() and represents the number of milliseconds that have passed since January 1, 1970 00:00:00.000 GMT. (Refer to the J2SE documentation for further details on System.getCurrentTimeMillis().)  To change the format,  use the dateformat property described in  Common Property File Settings .
  • execution time —The time it takes for a particular method to execute. (This is not the total cost for the SQL statement.) For example, a statement SELECT * FROM MYTABLE WHERE THISCOL = ? might be executed as a prepared statement, in which the .execute() function will be measured. This is recorded as the statement category. Further, as you call .next() on the ResultSet, each .next()  call is recorded in the result category.
  • category You can manage your log by including and excluding categories, which is described in  Common Property File Settings .
  • statement SQL string —This is the SQL string passed to the statement object. If it is a prepared statement, it is the prepared statement that existed prior to the parameters being set. To see the complete statement, refer to effective SQL string.
  • effective SQL string If you are not using a prepared statement, this contains no value. Otherwise, it fills in the values of the Prepared Statement so you can see the effective SQL statement that is passed to the database. Of course, the database still sees the prepared statement, but this string is a convenient way to see the actual values  being sent to the database.

p6spy的FileLogger日志格式如上介绍的:

current time|execution time|category|statement SQL String|effective SQL string

打印出来的日志可读性不是很好,下一节我们可以定制自己的格式 。

 

以下图片中 是按我个人的格式:

 



  • 大小: 118.6 KB
  • 大小: 61.6 KB
分享到:
评论

相关推荐

    采用p6spy完整显示hibernate的SQL语句

    P6Spy是一个开源的JDBC代理库,它允许我们监控并记录应用通过JDBC执行的所有数据库操作,包括那些由Hibernate生成的SQL语句。它不仅可以提供完整的SQL语句,还能够提供执行时间、性能指标等详细信息,这对于优化...

    p6spy简介显示hibernate配置

    4. **查看结果**:启动应用后,P6Spy将开始记录所有通过Hibernate执行的SQL,并按照配置的方式输出。这将帮助开发者了解SQL的执行情况,找出可能的性能问题。 通过P6Spy,开发者可以更深入地了解和控制数据库操作,...

    使用p6spy完整显示hibernate的SQL语句

    这篇博客“使用p6spy完整显示hibernate的SQL语句”可能详细解释了如何配置和使用p6spy来跟踪Hibernate生成并执行的SQL。 首先,`p6spy`是一个Java数据库代理库,它可以拦截并记录所有通过JDBC发送到数据库的SQL语句...

    P6SPY JDBC拦截打印sql语句 非常好的调试工具

    P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...

    下载 p6spy.jar (内含使用步骤)

    P6Spy 是一个开源的数据库监控工具,它能够记录并分析应用程序与数据库之间的所有SQL交互。对于开发者而言,P6Spy 是一个强大的调试和性能分析工具,尤其在使用MyBatis或Hibernate等ORM框架时,能够帮助我们更好地...

    p6spy.rar输出完整带参sql

    标题中提到的“输出完整SQL”,意味着P6Spy可以捕获并记录应用程序发出的所有SQL语句,包括参数。这对于调试和性能分析非常有用,特别是当SQL语句是动态生成或者使用了预编译的PreparedStatement时。 5. **兼容性*...

    p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用

    p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用 p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用 p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用

    用 p6spy 来观察 Java 程序中执行的所有 SQL 语句.docx

    p6spy 是一个开源的 Java 框架,它的主要功能是在不修改代码的情况下,监控和记录 Java 应用程序中执行的所有 SQL 语句。这个工具对于开发者来说非常有用,因为它可以帮助定位性能瓶颈,特别是在使用 ORM(对象关系...

    最新p6spy-3.6.0监控框架Hibernate和Mybatis执行数据库sql,调试监控项目程序运行状态

    内含p6spy-3.6.0.zip,p6spy最新Hibernate和Mybatis拦截并格式化sql配置.txt两个文件,用于调试监控项目运行状态,亲测可用,测试整理出来花了我很长时间的,好用不可多得!

    数据插入监控 p6spy

    **P6Spy** 是一个开源的Java库,用于监控和日志记录应用程序与数据库之间的所有交互。它通过拦截和包裹JDBC驱动程序来实现这一功能,使得开发人员和DBA可以详细跟踪SQL查询,这对于性能优化、问题排查以及理解应用...

    p6spy_sqlprofiler

    专门用来监控hibernate的sql输出,进行调试应用程序的工具,找了好久才找到,里面有个配置文件,记住realdriver是你的驱动,而在hibernate设置的驱动是这个驱动代理,p6spy的驱动,相当于在hibernate和数据库之间放...

    p6spy

    - **概述**:文档提到p6spy可以用于拦截Hibernate通过JDBC执行的SQL语句。Hibernate是一个流行的ORM框架,用于简化Java应用中的数据访问操作。 - **具体步骤**: 1. **替换数据库驱动**:正如前文所述,首先需要将...

    用p6spy来观察Java程序中执行的所有SQL语句[整理].pdf

    p6spy是一个开源的Java库,设计用于监视和分析应用程序中执行的SQL语句。它的主要用途是在不修改代码的情况下,帮助开发者监控和调试应用程序与数据库之间的交互,尤其适用于那些使用ORM(对象关系映射)框架如...

    p6spy过滤resultset版

    p6spy支持jpa(如hibernate、ibatis/mybatis)打印完整sql。 此为本人在p6spy源码基础上进行修改,使其能在sql日志中过滤resultset,是sql更简洁,开发更方便。

    p6spy日志监控 sql注入

    # oracle driver # realdriver=oracle.jdbc.driver.OracleDriver # mysql Connector/J driver ... # informix driver ... # ibm db2 driver ...realdriver2= #specifies a third driver to use realdriver3=

    p6spy-install.jar

    与hibernate配合使用实现sql语句参数的打印及其他的一些性能方面的监控,有利于优化sql代码,用法上网随便一搜很多的

    hibernate按自己要求输出自己规则的完整SQL

    在企业做项目时如果用了hibernate会有个头疼问题,就是如何让输出sql方便查看,因为出了问题时,要去查错时sql日志会给我们很大帮助,但hibernate通过配p6spy输出很乱,且只能输了到spy.log中,很不好查看,这里是我...

    提升Hibernate性能的魔方——IronTrack SQL.pdf

    IronTrack SQL是基于Apache许可证的开源工具,通过与开源JDBC驱动p6spy合作,提供了一个增强的对基于Hibernate的数据库应用的可视化调试和性能评测手段。 当开发者初次接触Hibernate时,他们通常会寻找方法来监控...

    监控sql输出-可以查看hql转成sql的结果值

    2. 配置数据库驱动,让应用程序通过P6Spy的代理驱动连接数据库。 3. 配置P6Spy的配置文件(spy.properties),指定日志文件位置和其他参数。 4. 分析P6Spy生成的日志文件,查看和分析SQL执行情况。 通过这样的监控...

Global site tag (gtag.js) - Google Analytics