log4j コンソールはログの障害解決策を出力しません。

序文

他のプロジェクトチームからコードを引き継いだのですが、IDAEでプログラムをデバッグしたところ、log4jのログがコンソールに出力されず、ログ関連のコードに問題がないことが分かりました。

私はインターネットを検索し、この問題を解決するための個人的なプロセスをまとめました。

プロセス

1. 使用する構成ファイルを決定する

目的は分かりませんが、プロジェクト内にlog4jのプロパティとxmlの2つの設定ファイルがあります。

最初はxmlファイルが見えませんでしたが、プロパティファイルに注目し続けたところ、問題ないことがわかりました。その後、Vm のオプションに **-Dlog4j.debug** が追加され、起動時に出力される log4j の情報から、log4j が xml ファイルを使用していることがわかりました。

2. 相加性

2 番目は、 <logger> の加法性属性です。

<!-- 打印到控制台 -->
<appender name="myConsole" class="org.apache.log4j.ConsoleAppender">
   <param name="Target" value="System.out" />
   <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern"  value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" />
   </layout>
</appender>

<!-- 打印到文件中 -->
<appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="${logfileName}.log" />
    <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
               value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" />
    </layout>
</appender>

<!-- logger -->
<logger name="com.test" additivity="false">
   <level value="INFO" />
   <appender-ref ref="fileAppender" />
</logger>

<!-- root -->
<root>
   <priority value ="INFO"/>
   <appender-ref ref="myConsole"/>
</root>

XML 設定ファイルの <appender> は、ログがコンソールまたはファイルに出力される形式を定義します。<logger> は、どのアペンダーがプロジェクト内の各クラスにバインドされるかを決定します。<root> はルート ロガーであり、複数のアペンダをバインドします。

ロガーの加法性のデフォルトは true です。これは、ルートのアペンダーが印刷できるように、ロガーによって出力されるログもルートに送信される必要があることを意味します。

3. 解決策

オプション 1

デフォルト値は true であるため、加法性を true に変更するか、直接削除します。

オプション II

com.test のロガーにコンソール アペンダを追加します。

<!-- logger -->
<logger name="com.test" additivity="false">
   <level value="INFO" />
   <appender-ref ref="fileAppender" />
   <appender-ref ref="myConsole" />
</logger>

このようにして、コンソールにログが出力されない問題は解決されます。


95 歳以降の若手プログラマーが、日々の業務における個人的な実践を、初心者の視点から 0 から 1 まで詳しく、真剣に書きます。記事は公式アカウント【あきらめロード入門】にて公開してまいりますので、ご注目いただければ幸いです。

あらゆる出会いに感謝します

おすすめ

転載: blog.csdn.net/CatchLight/article/details/129236667