2016-05-28 11 views
0

私は以下のようなlog4j設定ファイルを持っています。私がしたいのは、TRACEをコンソールに出力し、ERRORメッセージをファイル(fileerror)に出力します。しかし、それは動作しません、コンソールとファイルの両方がTRACEレベルにあります。 Java log4j設定ファイルが機能しない

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration debug="true" 
    xmlns:log4j='http://jakarta.apache.org/log4j/'> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" 
      value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
     </layout> 
    </appender> 
    <appender name="fileerror" class="org.apache.log4j.RollingFileAppender"> 
     <param name="append" value="false" /> 
     <param name="maxFileSize" value="1024MB" /> 
     <param name="maxBackupIndex" value="2" /> 
     <param name="file" value="ExonImpact.error.log.txt" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" 
      value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
     </layout> 
    </appender> 
    <logger name="ccbb.hrbeu" additivity="true"> 
      <level value="TRACE"/> 
      <appender-ref ref="console" /> 
    </logger> 
    <root> 
      <level value="ERROR"/> 
      <appender-ref ref="fileerror" /> 
    </root> 
</log4j:configuration> 

以下は私のlog4jデバッグ情報です。

log4j: reset attribute= "false". 
log4j: Threshold ="null". 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [ccbb.hrbeu] additivity to [true]. 
log4j: Level value for ccbb.hrbeu is [TRACE]. 
log4j: ccbb.hrbeu level set to TRACE 
log4j: Class name: [org.apache.log4j.ConsoleAppender] 
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" 
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n]. 
log4j: Adding appender named [console] to category [ccbb.hrbeu]. 
log4j: Level value for root is [ERROR]. 
log4j: root level set to ERROR 
log4j: Class name: [org.apache.log4j.RollingFileAppender] 
log4j: Setting property [append] to [false]. 
log4j: Setting property [maxFileSize] to [1024MB]. 
log4j: Setting property [maxBackupIndex] to [2]. 
log4j: Setting property [file] to [ExonImpact.error.log.txt]. 
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" 
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n]. 
log4j: setFile called: ExonImpact.error.log.txt, false 
log4j: setFile ended 
log4j: Adding appender named [fileerror] to category [root]. 

答えて

0

デフォルトでは、子ロガーによってキャッチされたすべてのメッセージは、ルートロガーに伝播されます。そのため、両方のロガーが同じメッセージを記録するのです。 loggerがメッセージをルート・ロガーに渡さないようにするには、additivityパラメーターをfalse(additivity = "false")に設定します。または、ファイルアペンダに追加の「しきい値」パラメータを追加することができます。

<param name="Threshold" value="ERROR" /> 

エラーレベル以下のすべてのメッセージは無視されます。

関連する問題