我想使用logback的替換功能沒有在我的MDC日誌模式中打印空值。 http://logback.qos.ch/manual/layouts.html#replaceLogback替換正則表達式來檢測空值
我試圖效仿的榜樣從這裏 http://logogin.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]+:(|$
我的正則表達式有點弱。我似乎無法理解替換模式爲什麼會出現在我的日誌行中。任何幫助是極大的讚賞。