1

私はlog4jが初めてで、プロジェクトで使用しようとしています。何らかの理由で、情報がコンソールに表示されません。logger.error()に変更した場合にのみ機能します。これは userServiceImpl クラスでのみ発生しており、コントローラーなどの他のクラスは問題ありません。これは log4j.xml です。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration debug="false"
    xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!-- This default ConsoleAppender is used to log all NON perf4j messages 
        to System.out -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n" />
        </layout>
    </appender>

    <!-- The root logger sends all log statements EXCEPT those sent to the perf4j 
        logger to System.out. -->
    <root>
        <level value="ERROR" />
        <appender-ref ref="console" />
    </root>
    <logger name="com.click.heal.controller" additivity="false" >
      <level value="INFO" />
      <appender-ref ref="console"/>
   </logger>
    <logger name="com.click.heal.service" additivity="true" >
      <level value="INFO" />
        <appender-ref ref="console"/>
    </logger>
</log4j:configuration>
4

1 に答える 1

1

ルート カテゴリはエラー レベルです。他の 2 つのロガーのいずれにも該当しないものはすべて root に分類され、ERROR レベルでのみログに記録されます。ルート レベルを INFO に変更すると、ログに記録されるに違いありません。それがあなたが望むものだと言っているわけではありませんが、 UserServiceImpl クラスが現在ルートの下でログを記録しているという手がかりになります。

編集

サービス パッケージのロガーで加法性を false にしてみてください。加法性はメッセージが親に伝播することを意味し、親はルートであり、ルートは同じコンソールアペンダーにログを記録するため、これが問題を引き起こしている可能性があります。

于 2013-06-21T02:59:24.927 に答える