2017-05-31 4 views
0

ログレベルごとに別々のログファイルを作成する方法はありますか? 「エラー」ログを1つのファイルに記録し、「情報」を別のファイルに記録するだけです。 log4j2.propertiesでこれを行うための解決策が見つかりませんでした。ここに私が得たlog4j2.xmlがあり、うまくいきます。誰も私がプロパティファイルで同じことを書くのを助けることができますか?log4j2プロパティファイル内のファイルを別々のログレベルにログする

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN"> 
<Properties> 
<Property name="log-path">logs</Property> 
</Properties> 
<Appenders> 
<Console name="console-log" target="SYSTEM_OUT"> 
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
</Console> 
<RollingFile name="trace-log" fileName="${log-path}/mycuteblog-trace.log" 
filePattern="${log-path}/mycuteblog-trace-%d{yyyy-MM-dd}.log"> 
<PatternLayout> 
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> 
</PatternLayout> 
<Policies> 
<TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
</Policies> 
</RollingFile> 
<RollingFile name="error-log" fileName="${log-path}/mycuteblog-error.log" 
filePattern="${log-path}/mycuteblog-error-%d{yyyy-MM-dd}.log"> 
<PatternLayout> 
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> 
</PatternLayout> 
<Policies> 
<TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
</Policies> 
</RollingFile> 
</Appenders> 
<Loggers> 
<Logger name="com.mycuteblog.log4j2" level="debug" additivity="false"> 
<appender-ref ref="trace-log" level="debug"/> 
<appender-ref ref="error-log" level="error"/> 
<appender-ref ref="console-log" level="debug"/> 
</Logger> 
<Root level="info" additivity="false"> 
<AppenderRef ref="console-log"/> 
</Root> 
</Loggers> 
</Configuration> 

P.S. - 私はこれのためにコードを変更したくありません。私は特にlog4j2.propertiesを探しています。 ThresholdFilterログレベルに応じてメッセージをフィルタリングするのに役立つ事前

答えて

0

おかげ。異なるログファイルを取得するには、各アペンダに適切なしきい値フィルタが必要です。同じパターンは3つのすべてのアペンダのために使用されるため、ログのパターンは、プロパティとして定義されていること、

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN"> 
    <Properties> 
     <Property name="log-path">logs</Property> 
     <Property name="log-pattern">[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1}- %msg%n"/</Property> 
    </Properties> 
    <Appenders> 
     <Console name="console-log" target="SYSTEM_OUT"> 
      <PatternLayout> 
       <pattern>${log-pattern}</pattern> 
      </PatternLayout> 
     </Console> 
     <RollingFile name="trace-log" fileName="${log-path}/mycuteblog-trace.log" filePattern="${log-path}/mycuteblog-trace-%d{yyyy-MM-dd}.log"> 
      <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/> 
      <PatternLayout> 
       <pattern>${log-pattern}</pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
      </Policies> 
     </RollingFile> 
     <RollingFile name="error-log" fileName="${log-path}/mycuteblog-error.log" filePattern="${log-path}/mycuteblog-error-%d{yyyy-MM-dd}.log"> 
      <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> 
      <PatternLayout> 
       <pattern>${log-pattern}</pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
      </Policies> 
     </RollingFile> 
    </Appenders> 
    ... 

ご注意:これは、(XMLで)このような何かをする必要があります。

設定ファイルをプロパティファイルとして使用することはできません。使用したことはありません。

あなたは、フィルタhereThresholdFilter documentation

の詳細を見つけることができます
関連する問題