[英]can't log Hibernate queries log4j
我正在嘗試將休眠查詢記錄到Webapp特定的日志文件中。 我可以記錄任何消息,但仍然無法記錄休眠查詢。
它們被記錄在server.log
內部,甚至在另一個文件中,但是我需要針對同一服務器上運行的每個應用的特定於應用的日志。
我正在使用log4j 1.2
,我能夠創建日志文件,以記錄傳遞給控制台但休眠查詢的所有信息。
在database.properties
文件中,我找到了hibernate.show_sql=true
,它負責控制台中的日志記錄輸出。 我指的是這種控制台的日志記錄輸出:
16:10:35,827 INFO [stdout](http-localhost-127.0.0.1-8080-1)休眠:選擇[...](此處輸出通過的正確查詢,帶有准備好的語句的
?
)
無論如何,我需要記錄該輸出。 我嘗試了不同的log4j.xml
設置,但仍然沒有成功,它創建了日志文件,但沒有記錄這些輸出。 這是當前設置,即將所有文件記錄在同一文件中,當我能夠記錄那些信息時,我將繼續分開記錄。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="mainFileAppender2" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false" />
<param name="maxFileSize" value="100MB" />
<param name="maxBackupIndex" value="50" />
<param name="File" value="${webapp.root}/WEB-INF/logs/mainCORE.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %c{1}:%L %m %n" />
</layout>
</appender>
<appender name="journaldev-hibernate2" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${webapp.root}/WEB-INF/logs/hib-queriesCORE.log" />
<param name="Append" value="false"/><!--value="true" /-->
<param name="ImmediateFlush" value="true" />
<param name="MaxFileSize" value="200MB" />
<param name="MaxBackupIndex" value="50" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %d{Z} [%t] %-5p (%F:%L) - %m%n" />
</layout>
</appender>
<root>
<priority value="debug"></priority>
<!-- <appender-ref ref="stdout"/> -->
<appender-ref ref="mainFileAppender2"/>
</root>
此配置記錄除那些輸出之外的所有內容。 在server.log
中記錄如下:
16:10:35,827 INFO [stdout](http-localhost-127.0.0.1-8080-1)休眠:選擇[...](查詢的其余部分)
為記錄器配置以下類別:
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
第一個將記錄SQL語句(帶?的參數值),第二個將打印這些參數值(如果需要)。
因此,在您的情況下,應采用以下方法:
<category name="org.hibernate.SQL">
<appender-ref ref="journaldev-hibernate2"/>
<priority value="DEBUG"/>
</category>
<category name="org.hibernate.type">
<appender-ref ref="journaldev-hibernate2"/>
<priority value="TRACE"/>
</category>
這樣解決了; 無論如何,它還會提取從查詢中提取的值
log = ${jboss.server.log.dir}/log/
#Loggers
log4j.rootLogger = INFO, FILE
log4j.logger.org.hibernate.SQL = DEBUG, HIBERNATE
log4j.logger.org.hibernate.type = TRACE, HIBERNATE
#Appenders
# Main appender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=${log}/main.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d %-5p %c{1}:%L %m %n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=true
log4j.appender.FILE.DatePattern=dd-MM-yyyy
# Hibernate queries appender
log4j.appender.HIBERNATE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.HIBERNATE.File=${log}/hib-queries.log
log4j.appender.HIBERNATE.layout=org.apache.log4j.PatternLayout
log4j.appender.HIBERNATE.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n
log4j.appender.HIBERNATE.ImmediateFlush=true
log4j.appender.HIBERNATE.Threshold=debug
log4j.appender.HIBERNATE.Append=true
log4j.appender.HIBERNATE.DatePattern=dd-MM-yyyy
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.