11

Hibernate の c3p0 接続プールと標準の Java 1.4 を使用していjava.util.loggingます。起動時に、アプリはログ プロパティ (フォーマッタとログ レベルを含む) をstaticブロックで設定します。アプリを起動するたびに、次のように表示されます。

2011-04-16 17-43-51 [com.mchange.v2.log.MLog] INFO: {MLog.<clinit>) MLog clients using java 1.4+ standard logging.
2011-04-16 17-43-51 [com.mchange.v2.c3p0.C3P0Registry] INFO: {C3P0Registry.banner) Initializing c3p0-0.9.1 [built 16-January-2007 14:46:42; debug? true; trace: 10]
2011-04-16 17-43-51 [com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource] INFO: {AbstractPoolBackedDataSource.getPoolManager)
...

私はもう試した

Logger.getLogger("com.mchange").setLevel(Level.WARNING);
com.mchange.v2.log.MLog.getLogger().setLevel(MLevel.WARNING);
System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "WARNING");

しかし、私が今のところ見つけたそれを防ぐ唯一の方法は

Logger.getLogger("").setLevel(Level.WARNING);

これはすべてに影響します - 良い副作用ではありません。Google は役に立ちませんでした。誰か助けてくれませんか?

4

7 に答える 7

21

私が見つけた方法は、システムプロパティを設定することです

System.setProperty("com.mchange.v2.log.MLog", "com.mchange.v2.log.FallbackMLog");

に加えて

System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "WARNING");

他のロギングシステムがなければそれはオプションになると思いましたが、どうやら私は間違っていたようです。

PS

c3p0 で使用されているような、車輪の再発明されたカスタム ロギングの実装をくそくらえ...

于 2011-04-18T04:55:16.617 に答える
17

これを達成するために私が見つけた方法

クラスパスにmchange-log.propertiesというファイルを作成し、Frozen Spider によって提案されたプロパティをその中に入れます。

com.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog
com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=WARNING

システムプロパティを直接設定できない場合でも、これはうまく機能します。

于 2014-10-25T15:52:21.487 に答える
4

c3p0 ロギングのデフォルトは DEBUG のようです。その結果、多くのノイズが発生する可能性があります。

次のような行を log4j.properties に追加することで、重要でない限り、ロガーに c3p0 メッセージで煩わされないように指示します。

log4j.logger.com.mchange.v2=WARN
于 2013-02-02T22:58:46.830 に答える
3

c3p0 のログを表示したくないですか?

もしそうなら試してみてください:

Logger.getLogger("com.mchange.v2.c3p0").setLevel(Level.WARNING);

または、ログの最初の行さえ見たくない場合:

Logger.getLogger("com.mchange.v2").setLevel(Level.WARNING);
于 2011-04-16T15:41:06.510 に答える
1

これはおそらく非常に遅いですが、c3p0 プロジェクトの Web サイトによると、mchange-log.propertiesslf4j または log4j (および Logback) を使用して情報をキャプチャできるように、内部のログを構成することが可能です。

リンクhttp://www.mchange.com/projects/c3p0/#configuring_loggingは、mchange-log.propertiesファイルでプロパティcom.mchange.v2.log.MLogを等しいに設定すると、次のようなロガーを提供できるという情報を提供com.mchange.v2.log.slf4j.Slf4jMLogします。logback.xml

<logger name="com.mchange" level="warn" additivity="false">
    <appender-ref ref="c3p0-log" />
</logger>

注: この正確なコードを使用する前に、c3p0-log というログバック アペンダーを作成する必要があります。

于 2017-12-19T13:42:56.197 に答える
0

ルート クラスパスに log4j.properties というファイルを作成し、そこに次のように設定します。

# Configure the name of the file for the LOGGER appender
log4j.appender.LOGGER=org.apache.log4j.ConsoleAppender
log4j.appender.LOGGER.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGGER.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
log4j.appender.LOGGER.append=false

# this line logs everything from hibernate package at info level, you can refine this to include only some pachages like log4j.logger.org.hibernate.hql etc.,
log4j.logger.org.hibernate=INFO, LOGGER

log4j.logger.org.jboss.cache=INFO, LOGGER

ロギング戦略をプログラムで設定すると、設定がまったく有効にならない場合があるため(あなたの場合のように)、これはロギングを実装するためのはるかに優れた方法です.log4j.propertiesファイルを使用すると、設定が適用されますアプリケーションの起動時とすべてがスムーズに機能します。

于 2011-04-17T05:03:55.693 に答える