2

log4jまたはSpringまたはH2の構成に問題があります。犯人が見つからないようです。私の問題は、log4jのログ設定が非常に厳密であるにもかかわらず、システム内の一部のコンポーネントから不要なログを取得することです。

SpringFrameworkとHibernateを使用してH2データベースにアクセスします。これら3つのうちの1つは、に直接印刷されているように見えるログを生成しSystem.outます。

私のログ出力:

12-12 18:41:08 jdbc[2]: 
/*SQL */SET DB_CLOSE_DELAY -1;
12-12 18:41:08 jdbc[2]: 
/**/Connection conn1 = DriverManager.getConnection("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=    2", "", "");
12-12 18:41:08 jdbc[2]: 
/*SQL #:1*/CALL LOCK_MODE();
12-12 18:41:08 database: disconnecting session #2
[main] WARN  org.hibernate.internal.util.xml.DTDEntityResolver  - HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!

ご覧のとおり、適切なロガー行は最後の行だけです。私のlog4j構成は次のとおりです。

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=INFO, A1

log4j.logger.org.hibernate=WARN
log4j.logger.org.springframework=WARN
log4j.logger.org.h2=WARN
log4j.logger.org.java.sql=WARN

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%t] %-5p %c %x - %m%n

誰がそれらのメッセージを作成しているのかを知るにはどうすればよいですか?また、彼を黙らせるにはどうすればよいですか?

4

1 に答える 1

2

すべてのJavaソフトウェアがlog4jを使用するわけではありません。

この場合、H2は、 「他のロギングAPIの使用」のセクションのドキュメントに記載されているように、slf4jを使用して制御できるトレースを生成します。

于 2012-12-12T19:53:11.087 に答える