2017-02-22 7 views
0

Webアプリケーション固有のログファイルにhibernateクエリを記録しようとしています。 私は任意のメッセージを記録できますが、私はまだハイバネートクエリをログに記録できません。
これらのファイルは別ファイルであってもserver.logの中に記録されていますが、同じサーバー上で実行されている各アプリケーションごとにアプリ固有のログが必要です。
私はlog4j 1.2を使用しています。ログファイルを作成して、コンソールに渡されたすべての情報をログに記録できますが、休止状態のクエリはログに記録できます。
database.propertiesファイルの中に、コンソールのログ出力を担当するhibernate.show_sql=trueが見つかりました。はHibernateクエリをログに記録できませんlog4j

16:10:3​​5827 INFO [標準出力](HTTP-localhostを-127.0.0.1-8080-1)Hibernateは:選択して[...](ここで これは、私が参照して、コンソールのログ出力の一種であります正しい文が出力され、準備された文の?が付きます)

とにかく、出力を記録する必要があります。 異なる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​​5827 INFO [標準出力](HTTP-localhostを-127.0.0.1-8080-1)休止状態:選択して[...](クエリの残りの部分)

答えて

0

設定するには、次のカテゴリのロガー:

log4j.logger.org.hibernate.SQL=DEBUG 
log4j.logger.org.hibernate.type=TRACE 

(パラメータ値のために?)SQL文をログに記録します最初の1あなたがそれらを必要とする場合、二つ目は、これらのパラメータ値を表示します。

したがって、このような何かがあなたのケースでトリックを行う必要があります。

<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> 
+0

このようにして解決しました。 –

0

この方法で解決しました。とにかくクエリから抽出された値も抽出します

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 
関連する問題