2015-12-03 5 views
2

Мне удалось успешно настроить P6Spy для перехвата вызовов JDBC и вывода их на консоль Eclipse. Тем не менее, я хотел бы иметь эти журналы с параметрами привязки, записанными в файле. Может кто-то, пожалуйста, дайте мне понять, как это сделать. Вот мои текущие конфигурации:Как настроить p6spy перенаправить свой вывод в файл

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 для моего варианта использования, однако кажется, что он требует немного большей настройки, т. Е. Нужно изменить URL-адрес jdbc в соответствии с their doc. Приветствуется любой опыт, связанный с тем, как выполняется захват параметров в обеих фреймах и перенаправлен в файл.

Заранее спасибо.

ответ

0

Оказывается, есть разница между пространствами имен для классов Appender в p6spy между его основными версиями. Мы случайно использовать версию 1.3 p6spy где FileLogger Appender проживает в:

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

Ошибочно, мы использовали следующую конфигурацию, которая относится к версии 2.х p6spy:

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 
1

Вы должны использовать FileAppender и указать файл журнала, как показано в https://p6spy.github.io/p6spy/2.0/configandusage.html

 

    # specifies the appender to use for logging 
    # Please note: reload means forgetting all the previously set 
    # settings (even those set during runtime - via JMX) 
    # and starting with the clean table 
    # (only the properties read from the configuration file) 
    # (default is 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 

    # name of logfile to use, note Windows users should make sure to use forward slashes in their pathname (e:/test/spy.log) 
    # (used for com.p6spy.engine.spy.appender.FileLogger only) 
    # (default is spy.log) 
    #logfile = spy.log 

+0

Спасибо - я попытался точно, что перед публикацией, но он не работает для меня. Вы используете эту конфигурацию самостоятельно, и она работает? У меня было и # appender = com.p6spy.engine.spy.appender.StdoutLogger # appender = com.p6spy.engine.spy.appender.FileLogger раскоментирован, не уверен, имеет ли это значение. –

+0

Я не использую p6spy, но обнаружил, что после поиска на веб-сайте проекта p6spy. Я уверен, что «appender = com.p6spy.engine.spy.appender.StdoutLogger» переопределяет «appender = com.p6spy.engine.spy.appender.FileLogger» в вашем случае, поэтому, возможно, вам стоит попробовать снова после комментирования " StdoutLogger ". – andrucz