【问题标题】:How to configure p6spy to redirect its output into a file如何配置 p6spy 以将其输出重定向到文件中
【发布时间】:2015-12-03 16:39:21
【问题描述】:

我能够成功配置P6Spy 以拦截 JDBC 调用并将它们输出到 Eclipse 的控制台。但是,我希望这些日志带有文件中捕获的绑定参数。有人可以帮我看看如何做到这一点。这是我目前的配置:

log4j.properties

# Default log level
log4j.rootCategory=ERROR, console, FileAppender

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %d [%t] %c: %m%n

# DEBUG File
log4j.appender.FileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FileAppender.Threshold=DEBUG
log4j.appender.FileAppender.File=claims_logger.log
log4j.appender.FileAppender.MaxFileSize=1024KB
log4j.appender.FileAppender.MaxBackupIndex=2
log4j.appender.FileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileAppender.layout.ConversionPattern=%-5p %d [%t] %c: %m%n

log4j.logger.org.apache=WARN

 log4j.logger.org.hibernate.engine.StatefulPersistenceContext.ProxyWarnLog=ERROR


log4j.logger.org.springframework.beans.factory=WARN

log4j.logger.org.mule=INFO
log4j.logger.org.mule.modules.sqs=DEBUG

log4j.logger.org.fuwt=DEBUG

spy.properties

realdriver=org.postgresql.Driver
useprefix=false
deregisterdrivers=true
module.log=com.p6spy.engine.logging.P6LogFactory

executionthreshold=

outagedetection=false
outagedetectioninterval=

filter=false

include     =

exclude     =

sqlexpression =

autoflush   = true

dateformat=yyyy-MM-dd hh:mm:ss

includecategories=

excludecategories=info,debug,result,batch

stringmatcher=

stacktrace=false

stacktraceclass=

reloadproperties=false


reloadpropertiesinterval=60


appender=com.p6spy.engine.logging.appender.StdoutLogger
append=true

log4j.additivity.p6spy=false

log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=p6spy - %m%n


log4j.logger.p6spy=DEBUG,STDOUT    

Spring 正在使用以下方法构建其数据源:

jdbc.driverClassName=com.p6spy.engine.spy.P6SpyDriver

我使用的是 P6Spy 1.3 版。

我读到 log4jdbc 是对我的用例进行 SQL 拦截的一种首选方式,但它似乎需要稍微多一点的配置,即需要根据 their doc 修改 jdbc URL。任何关于如何在任一框架中完成参数捕获并将其重定向到文件的经验都值得赞赏。

提前谢谢你。

【问题讨论】:

    标签: java spring logging p6spy log4jdbc


    【解决方案1】:

    您应该使用 FileAppender 并指定一个日志文件,如 https://p6spy.github.io/p6spy/2.0/configandusage.html 所示

    # 指定用于记录的附加程序 # 请注意:reload 意味着忘记所有之前设置的 # 设置(即使是在运行时设置的 - 通过 JMX) # 从干净的表开始 # (仅从配置文件中读取的属性) # (默认是 com.p6spy.engine.spy.appender.FileLogger) #appender=com.p6spy.engine.spy.appender.Slf4JLogger #appender=com.p6spy.engine.spy.appender.StdoutLogger #appender=com.p6spy.engine.spy.appender.FileLogger # 要使用的日志文件的名称,注意 Windows 用户应确保在其路径名中使用正斜杠(e:/test/spy.log) #(仅用于 com.p6spy.engine.spy.appender.FileLogger) # (默认是 spy.log) #logfile = spy.log

    【讨论】:

    • 谢谢——我在发帖前就试过了,但它对我不起作用。您是否自己使用该配置并且它正在工作?我有两个 #appender=com.p6spy.engine.spy.appender.StdoutLogger #appender=com.p6spy.engine.spy.appender.FileLogger 未注释,不确定是否重要。
    • 我没有使用p6spy,但是在p6spy项目网站上搜索后发现。我很确定“appender=com.p6spy.engine.spy.appender.StdoutLogger”在您的情况下会覆盖“appender=com.p6spy.engine.spy.appender.FileLogger”,所以也许您应该在评论后重试“ StdoutLogger”行。
    【解决方案2】:

    事实证明,p6spy 中 appender 类的命名空间在其主要版本之间存在差异。我们碰巧在使用 FileLogger appender 所在的 p6spy 1.3 版:

    appender=com.p6spy.engine.logging.appender.FileLogger
    

    我们错误地使用了以下配置,它与 p6spy 的 2.x 版本有关:

    appender=com.p6spy.engine.spy.appender.FileLogger
    

    这会导致错误的行为。

    让我们知道这一点的是对控制台日志进行了更彻底的检查,其中发现了以下行:

    Cannot instantiate com.p6spy.engine.spy.appender.FileLogger, even on second attempt.  Logging to file log4jaux.log: java.lang.ClassNotFoundException: com.p6spy.engine.spy.appender.FileLogger
    

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多