2

Tomcat のサブプロジェクトに共通の log4j xml を使用しようとしています。すでに展開されている親プロジェクトがあり、親プロジェクトの一部は他の 3 つのプロジェクトです。2 つのプロジェクト A と B が既に存在し、ログは正常に機能します。新しいプロジェクト C を追加し、以下のように log4j を更新しました。ProjectC.log ファイルが作成されていることは確認できますが (これは tomcat の起動時に発生します)、このファイル (または他のファイル) に Project C 関連のログ ステートメントはありません。これは私の現在の log4j xml です:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="true">

<appender name="rootAppender" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout"> 
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/> 
    </layout> 
</appender>

<appender name="ProjectAAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="${catalina.base}/logs/projectA.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="100000KB"/>
    <param name="MaxBackupIndex" value="3"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/>
    </layout>
</appender>

<appender name="ProjectBAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="${catalina.base}/logs/ProjectB.csv"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="10000KB"/>
    <param name="MaxBackupIndex" value="3"/>
    <layout class="org.apache.log4j.PatternLayout"/>
</appender>

<appender name="ProjectCAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="${catalina.base}/logs/ProjectC.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="10000KB"/>
    <param name="MaxBackupIndex" value="3"/>
    <layout class="org.apache.log4j.PatternLayout"/>
</appender>

<logger name="projA" additivity="true">
    <level value ="DEBUG" />
    <appender-ref ref="ProjectAAppender"/>
</logger>
<logger name="projA.Performance" additivity="true">
    <level value ="INFO" />
    <appender-ref ref="ProjectBAppender"/>
</logger>
<logger name="projC" additivity="true">
    <level value ="DEBUG" />
    <appender-ref ref="ProjectCAppender"/>
</logger>   
<root>
    <priority value ="INFO" />
    <appender-ref ref="rootAppender"/>
</root>

log4j インスタンスを取得する方法は、 slf4j LoggerFactory を使用することです。

LoggerFactory.getLogger(clazz)

pom で log4j(1.2.14)、slf4j-log4j12(1.4.1) jar ファイルの依存関係を宣言しました。このセットアップは、プロジェクト C を個別に実行する場合 (junit テスト ケースを実行する場合) に正常に機能します。プロジェクト C のロギングを機能させるにはどうすればよいですか? log4j xml に加えるべき変更はありますか? ありがとうございました。

4

1 に答える 1

0

間違ったプロパティ ファイルを使用していたことがわかりました。実際の log4j.properties ファイルでは、 Project C という名前の新しいアペンダーを作成し、 rootCategory に登録する代わりに次の行を追加するだけで済みました。

log4j.logger.com.projectC.related.package=DEBUG, ProjectCAppender
于 2013-08-07T15:24:04.773 に答える