0

JBoss 5.1 を使用して、すべてのサービスを展開しています。しかし、私たちはこの問題に遭遇しました。

「A」と「B」という 2 つのプロジェクトがあるとします。「A」と「B」の両方に、「A.log」と「B.log」に記録する独自の個別のログ ファイルがあります。これらのプロジェクトは両方とも、共通の依存関係「C」を使用します。ここで、プロジェクト 'A' が 'C' を呼び出し、'C' に logger ステートメントがある場合、'C' は 'A' から呼び出されたため、'A.log' に記録する必要があります。同様に、プロジェクト 'B' が 'C' を呼び出す場合、'C' のロガー ステートメントは 'B.log' に記録されます。

このロギングを実現するには、JBoss と log4j をどのように設定すればよいでしょうか?

よろしくお願いします。

4

1 に答える 1

1

"A" と "B" の log4j アペンダーで TCLFilter/TCLMCFilter を使用して、共有クラスのアプリケーション ログを分離する必要があります。詳細については、このwiki - SeparatingApplicationLogsを参照してください。

例えば:

<appender name="LogA" class="org.apache.log4j.FileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"></errorHandler>
      <param name="Append" value="false"/>
      <param name="File" value="some_directory/log/a.log"/>
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
      <filter class="org.jboss.logging.filter.TCLMCFilter">
         <param name="AcceptOnMatch" value="true"/>
         <param name="DeployURL" value="a.ear"/>
      </filter>    
</appender>

.war ファイルの場合、ファイル名が「a-exp.war」に変更されることに注意してください。したがって、war を使用している場合は、それに応じて「DeployURL」を変更する必要があります。

于 2013-03-28T00:51:58.113 に答える