0

私は log4j と slf4j についてあまり知識がありません。しかし、以下のケースで実際のロガーがどのように機能しているかを理解したいと思います。

Web モジュール、Service モジュール、および Dao モジュールがあります。Web モジュールは Service に依存しており、Service は Dao に依存しています。

私の Web モジュールには 3 つの jar があります。slf4j jar、log4j jar、および slf4j-log4j12 jar と log4j.xml は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<!-- ============================== -->
   <!-- Append messages to the console -->
   <!-- ============================== -->

   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="Target" value="System.out"/>
      <param name="Threshold" value="INFO"/>

      <layout class="org.apache.log4j.PatternLayout">
         <!-- The default pattern: Date Priority [Category] Message\n -->
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
   </appender>

     <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">        



        <param name="file" value="C:\\temp\\web.log" />
        <param name="DatePattern" value="'.'yyyy-MM-dd" />
        <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="[%t] %d{HH:mm:ss,SSS} %-5p %l - %m%n" />
        </layout>
    </appender>

<!-- ======================= -->
   <!-- Setup the Root category -->
   <!-- ======================= -->

   <root>
      <!-- 
         Set the root logger priority via a system property. Note this is parsed by log4j         
       -->
        <level value="trace" />
        <appender-ref ref="CONSOLE"/>
   </root>

   <logger name="com.mywork">
        <level value="DEBUG" />
        <appender-ref ref="FILE" />
    </logger>



    <logger name="org.hibernate">
        <level value="ERROR" />
        <appender-ref ref="FILE" />
    </logger>

     <logger name="org">
        <level value="ERROR" />
        <appender-ref ref="FILE" />
    </logger>

</log4j:configuration>

そして、私のサービスモジュールとdaoモジュールには、slf4j jarのみが含まれています。ロギングの詳細はファイルにあります(すべてのモジュールのロギングの詳細)

hibernate と Spring のロガーもファイルで使用できるようにする必要がありますか? 例外がどのように発生するかはロガーファイルで入手できますか?

ありがとうございました

4

1 に答える 1

1

org.* をERRORlevel で明示的に制約します。これにより、休止状態と春のロガーのほとんどすべての出力が効果的に排除されます。ただし、エラー レベルでログに記録された例外は、引き続きファイル ログに取得する必要があります。

IDE で構成されたモジュールの依存関係は無関係です。ロギングは JBoss コンテナで行われ、実際のアプリケーションのランタイム クラスパスのみに依存します。

ところで、ルート カテゴリのトレース レベルに対して強くお勧めします。log4j のプロダクション設定ファイルを参照してください 。説明のために。

于 2013-10-11T06:25:16.287 に答える