2013-02-25 6 views
6

特定のロガーのログレベルを再マッピング:logback私は、閾値フィルタとのアペンダを持つlogbackの構成を有している

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"> 
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
    <level>INFO</level> 
    </filter> 
    ... 
</appender> 

これが唯一の情報と高いが(エラー、警告)syslogに記録されますことを保証します。しかし、私たちが使用するサードパーティのライブラリの1つは、DEBUGで特定のイベントを記録することです。このイベントをsyslogに記録したいと思います。私が気づいた最初のアプローチは、ロガーのログレベルを再マップすることでしたが、これが可能かどうかはわかりません。ような何か:明らかに

<logger name="akka.some.Thing" level="DEBUG" logAs="INFO"> 
    <appender-ref ref="SYSLOG" /> 
</logger> 

は、「logAs」パラメータが存在しないので、私はそれを行うことはできません。 akka.someを他のロガーのために配置したままSYSLOGアペンダにロギングするのに最適な方法は何でしょうか?

もう1つの方法は、フィルタを設置していないSYSLOG2という第2のアペンダを作成し、それを使用する特定のロガーを設定することですが、SYSLOGアペンダを1つだけ使用してログバックを設定する方法があるかどうかは疑問でした...

おかげで、あなたは何ができるか

+0

なぜしきい値フィルタがありますか?あなたの他の "ロガー"設定はこのアペンダーにINFOよりレベルを上回っていますか?もしそうなら、なぜですか? –

+0

はい、2か所にログします。 syslogアペンダはライセンス制約のあるインデクサで終わるので、INFOよりも低いログは絶対に記録しないでください。しかし、私たちがデバッグしたいときには、デバッグを有効にします。これはファイルアペンダに送られます(syslogのすべてのデバッグガンクなし)。 – Brett

+1

興味深い。あなたの環境が許せば、最も簡単なことは、ライセンス問題があったものを拒否する独自の小さなフィルタを書くことでしょう。さもなければ、表現を可能にするより複雑なフィルタの1つが機能するかもしれませんが、2番目のアペンダはおそらく理解しやすく、維持しやすくなります。 –

答えて

6

これは古い質問ですが、OPが単一のSyslogAppenderで何をしたいのかは実際には可能です。

他の人があなたのマッピングを変更する方法の例を検索している場合は、org.springframework.boot.logging.logback.LevelRemappingAppenderクラスをご覧ください。 そのアペンダーを使用すると、ログイベントに最後に使用されたアペンダーを再マップすることができます。また、最終的なログイベントに使用されるレベルを再マップすることもできます。 DEBUGレベルをINFOレベルに変更します。 - そうでそれを使用

<appender name="DEBUG_LEVEL_REMAPPER" class="org.springframework.boot.logging.logback.LevelRemappingAppender"> 
    <!-- Optional: specify the destination logger the event ends up in --> 
    <destinationLogger>org.springframework.boot</destinationLogger> 
    <!-- Optional: specify log level remapping --> 
    <remapLevels>INFO->DEBUG,ERROR->WARN</remapLevels> 
</appender> 

<logger name="org.thymeleaf" additivity="false"> 
    <appender-ref ref="DEBUG_LEVEL_REMAPPER"/> 
</logger> 

注特定の宛先ロガーに再マッピングすることが難しく、元のログイベントのソースコードを見つけることを作ることができる:(https://github.com/spring-projects/spring-boot/blob/master/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xmlから採取された)logback設定ファイルの

使用例お手入れ。

3

、同じ出力を有する第2ロガー+アペンダを書いている:

<appender name="SYSLOG-2" class="ch.qos.logback.classic.net.SyslogAppender"> 
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
    <level>DEBUG</level> 
    </filter> 
    ... 
</appender> 

<logger name="akka.some.Thing" level="DEBUG"> 
    <appender-ref ref="SYSLOG-2" /> 
</logger> 

これは、同じ出力に特定のデバッグタスクを追加します。

+0

yep - これは私の考えでした。 "もう1つのアプローチは、私の元の記事のように2番目のアペンダーを作成することでしたが、"ちょうど1人のアペンダーでログバックを設定する方法があるのだろうか "と思っていました。 1つのアペンダーで行う唯一の方法は、私が推測するロガーごとに "再マップ"タイプの設定を受け入れるカスタムアペンダーを書くことです。 – Brett

関連する問題