3

MDC ログ パターンに空の値が出力されないように、logback の置換機能を使用しようとしています。 http://logback.qos.ch/manual/layouts.html#replace

私はここから例に従おうとしています http://login.blogspot.com/2013/04/logback-mdc-and-empty-values.html

いくつかの背景

90% の時間で、ログ パターンが出力されます

2014-08-28 11:30:27,014  emp:Peter org:IT Expense submitted

印刷される時間の 5%

2014-08-28 11:30:27,014  emp: org: Cleanup jobs.

これは、後者の場合、MDC で emp と org を指定する必要がないためです。これらの場合、emp: と org: がログ行にまったく存在しないようにします。

望ましい

2014-08-28 11:30:27,014  Cleanup jobs.

置換による可能な解決策

これが私の変数と私が使用しているアペンダーです。mdcPattern は、emp 値と org 値がない場合、空の文字列に解決されるという考えです。

<variable scope="context" name="mdcPattern" value="%replace( emp:%X{empName} org:%X{orgName} ) {'[a-z]+:( |$)', ''}"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d ${mdcPattern} %thread %-5level %logger{25} - %msg%n</pattern>
    </encoder>
</appender>

ただし、正規表現の置換は機能しません。ログ行は次のように表示されます。

2014-08-28 11:30:27,014  emp: org: {'[a-z]+:( |$

私の正規表現は少し弱いです。ログ行に置換パターンがそのまま表示される理由がわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

4

元のブログ投稿の著者の助けを借りて、これを機能させることができました。彼は github で別の例を提供しています。 http://login.blogspot.com/2013/04/logback-mdc-and-empty-values.html https://gist.github.com/login/ff44c254f655340b653c

削除した置換パターンに余分なスペースがありました。

例:{orgName} ) {'[a-z]+ 宛先:{orgName}){'[a-z]+

于 2014-09-08T20:27:01.383 に答える