簡體   English   中英

無法記錄休眠查詢log4j

[英]can't log Hibernate queries log4j

我正在嘗試將休眠查詢記錄到Webapp特定的日志文件中。 我可以記錄任何消息,但仍然無法記錄休眠查詢。
它們被記錄在server.log內部,甚至在另一個文件中,但是我需要針對同一服務器上運行的每個應用的特定於應用的日志。
我正在使用log4j 1.2 ,我能夠創建日志文件,以記錄傳遞給控制台但休眠查詢的所有信息。
database.properties文件中,我找到了hibernate.show_sql=true ,它負責控制台中的日志記錄輸出。 我指的是這種控制台的日志記錄輸出:

16:10:3​​5,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:3​​5,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM