0

を使用してロガーのインスタンスを1つ作成しています

private static Logger = Logger.getClass("ClassName.class");

各アクションクラスにはロガーがあります。これは、テスト環境では正常に機能しました。ただし、本番環境のWAS7ではスレッドがハングすることがあります。IBMサーバーのアナリストによると、DBの更新を待っている間、ログファイルがロックされています。

以下は私がlog4j.xmlに持っているものです。

   <appender name="logger1" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File" value="/logs1/logFile.log" />
            <param name="DatePattern" value="'.'yyyy-MM-dd" />
            <param name="Threshold" value="DEBUG" />
            <param name="Append" value="true" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %-5p (%F:%L) - %m%n" />
            </layout>
    </appender>

誰か助けてもらえますか?スタティックを削除した場合、何か利点はありますか?SL4j LoggerFactoryを使用してロガーを取得する場合、何か利点はありますか?

編集:関連ポイント:log4j.xmlは2つのアプリケーション間で共有されます。アプリケーションは、1つのEARファイル内の2つのWARファイルです。log4j.xmlには2つのアペンダーがあります。各アプリケーションは、コード内の他のアペンダーを削除します。

4

1 に答える 1

0

スタティックを削除した場合、何か利点はありますか?

いいえLogger.getClass、それでも同じインスタンスを返します。したがって、これはlog4jのロックに関して何も変更しません。

SL4j LoggerFactoryを使用してロガーを取得する場合、何か利点はありますか?

いいえ(少なくともあなたが直面している問題についてはそうではありません)。ロックはlog4jで行われます。SLF4Jは、log4jに委任するファサードにすぎません(log4jを別のものに置き換えない限り)。

于 2012-09-15T07:21:29.763 に答える