0

これは私のlog4j.xmlです

<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->

<!--  DAILY ROLLING -->
<appender name="file" class="org.apache.log4j.RollingFileAppender">
    <param name="MaxFileSize" value="10240KB" />
    <!-- Keep one backup file -->
    <param name="MaxBackupIndex" value="10" />
    <param name="ImmediateFlush" value="true" />
    <param name="Append" value="true" />
    <param name="File" value="/usr/local/xmld/log/xmld-core.log" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="XMLD2[%t] [loadId(%X{loadID}) - %X{customer} - %X{configuration} - %X{filename}]: %-5p - %d{yyyy-MM-dd HH:mm:ss,SSS} (%F:%M:%L) %m%n" />
    </layout>
</appender>

<!--  SYSLOG -->
<appender name="syslog" class="org.apache.log4j.net.SyslogAppender">
    <param name="syslogHost" value="${hostName}" />
    <param name="facility" value="LOCAL6" />
    <param name="facilityPrinting" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="XMLD2[%t] [loadId(%X{loadID}) - %X{customer} - %X{configuration} - %X{filename}]: %-5p - %d{yyyy-MM-dd HH:mm:ss,SSS} (%F:%M:%L) %m%n" />
    </layout>
</appender>

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="XMLD2[%t] ${hostName} [loadId(%X{loadID}) - %X{customer} - %X{configuration} - %X{filename}]: %-5p - %d{yyyy-MM-dd HH:mm:ss,SSS} (%F:%M:%L) %m%n" />
        <!-- %d (%c{1})[%5p] %m%n -->
    </layout>
</appender>

<!-- ====== Categories ===== -->
<!-- core -->
<logger name="com.my.xmldelivery2.core">
    <level value="DEBUG" />
    <appender-ref ref="syslog" />
    <appender-ref ref="console" />
    <appender-ref ref="file" />
</logger>

<logger name="com.my.commons.utils">
    <level value="DEBUG" />
    <appender-ref ref="syslog" />
    <appender-ref ref="console" />
    <appender-ref ref="file" />
</logger>

<!-- hibernate -->
<logger name="org.hibernate">
    <level value="INFO" />
    <appender-ref ref="syslog" />
    <appender-ref ref="console" />
    <appender-ref ref="file" />
</logger>

<!-- Apache VFS2 -->
<logger name="org.apache.commons.vfs2">
    <level value="INFO" />
    <appender-ref ref="syslog" />
    <appender-ref ref="console" />
    <appender-ref ref="file" />
</logger>

パッケージcom.my.commons.utilsは依存関係com.my.xmldelivery2.coreですが、私のソフトウェアです。これは、の後に生成されるlog4j.xmlmaven installです。

しかし、コンソールログには、utilsパッケージについて何も表示されません。パッケージ名は正しいです。私は自分が間違っていることを本当に理解していません。最後の2つのパッケージは最初の2つのパッケージでも使用されていると言わざるを得ません。

4

2 に答える 2

2

これを試して:

1)ルートロガー構成を追加します。すべてのログイベントがルートに入力されます。

<root>
   <level value="DEBUG" />
    <appender-ref ref="syslog" />
    <appender-ref ref="console" />
    <appender-ref ref="file" />
</root>

2)すべてのDEBUGロガー構成を削除します

3)INFOレベルのみを構成します。DEBUGはルートに渡されません

<!-- hibernate -->
<logger name="org.hibernate">
    <level value="INFO" />
</logger>

<!-- Apache VFS2 -->
<logger name="org.apache.commons.vfs2">
    <level value="INFO" />
</logger>
于 2012-12-20T12:54:08.470 に答える
1

まず、com.my.commons.utilsパッケージが依存関係にある場合、その依存関係のクラスがクラス名の名前でロガーを使用していることを確認できますか?com.my.commons.utils.MyClassがという名前のロガーを使用している場合MyFancyLogger、何も印刷されません。

utilsしたがって、パッケージ内のクラスが「クラス名と一致するロガー名」の慣例に従っていると仮定すると、Log4J命令のいずれかが機能しているように見えますか?あなたはあなたlog4j.xmlが実際に効果を発揮していることを確かに知っていますか?

いずれの場合も、-Dlog4j.debug=trueシステムプロパティを使用して、舞台裏で何が起こっているかを正確に確認できます。

于 2012-12-20T12:41:51.743 に答える