2017-05-17 19 views
0

私はlog4j2アペンダーを使用して、Markerを使用してウェブとXMLコンテンツを特定のファイルに記録します。次のようにlog4j2を使用してログ・ステートメントを特定のファイルにルーティングする方法は?

<Appenders> 
     <RollingRandomAccessFile name="WEB" fileName="web.log"> 
     <Filters> 
      <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> 
      <MarkerFilter marker="WEB" onMatch="ACCEPT" onMismatch="DENY" /> 
     </Filters> 
     </RollingRandomAccessFile> 
</Appenders> 

私は正常に私のコードでそれを使用することができます。

logger.info(MarkerFactory.getMarker("WEB"), "myinfo"); 

は、さらに私は、コンテンツがコンソールをSYSOUTに印刷することにしたい。

<Appenders> 
    <Console name="CONSOLE" target="SYSTEM_OUT"> 
     <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" /> 
    </Console> 
    <RollingRandomAccessFile name="WEB" .../> 
</Appenders> 

<Loggers> 
    <Root level="all"> 
     <AppenderRef ref="CONSOLE" /> 
     <AppenderRef ref="WEB" /> 
    </Root> 
</Loggers> 

しかし:今、次のクラスDEBUGモードでログインする必要がありますが、ファイルはweb.logに限られ、コンソールにも表示されます。

<Loggers> 
     <logger name="org.springframework.web.filter.CommonsRequestLoggingFilter" 
       level="DEBUG"> 
      <AppenderRef ref="WEB" /> 
     </logger> 
</Loggers> 

結果:

1)フィルターの内容がCONSOLEにファイルに出力されないが:2つの問題点があります。私は両方にログインしたい。

2)マーカーなしでログに記録される通常の情報ログ(logger.info("test")など)も、WEB.logファイルに記録されます。私はこれを防止したいと思います。

どこが誤っていますか?

答えて

0

EDITED

  1. 指定されていませんマーカー - >指定
  2. ウェブマーカーをコンソールにログインします - >あなたがウェブやコンソール

にログイン - >ウェブ

  • 使用フィルターロガーにログイン3つのロガーを持つことでこれを達成できます。あなたのルートロガーをコンソール<AppenderRef ref="CONSOLE" />にのみ追加するように設定してください。フィルターロガーを両方に追加するように設定してください(<AppenderRef ref="CONSOLE" /><AppenderRef ref="WEB" />)。希望のレベルで3番目のロガーを作成し、<AppenderRef ref="WEB" />によってweb.logにのみ追加します。 (マーカーを指定している場合は実際には最後のステップは必要ではないかもしれませんが、私が知っている限り、WEBマーカーはWebにのみ記録するように指示します)

  • +0

    WEBマーカーステートメントweb.logにのみ。しかし、私は 'CommonsRequestLoggingFilter'出力をコンソール+ WEBマーカーの両方に記録したいと思います。 – membersound

    +0

    ありがとう、ポイント2に関して:私は* root logger *に常にWEBにログを記録したくありません。私はCommonsRequestLoggingFilterがWEBにログを記録するだけです。他のすべてのルートログは変更しないでください。 – membersound

    +0

    ウェブマーカーがない場合はどうなりますか?コンソールにログするだけですか? – Ishnark

    関連する問題