Logback替换正则表达式来检测空值
问题描述:
我想使用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]+:(|$
我的正则表达式有点弱。我似乎无法理解替换模式为什么会出现在我的日志行中。任何帮助是极大的赞赏。
答
在原始博客文章作者的帮助下,我设法让这个工作。 他在github上提供了另一个例子。 http://logogin.blogspot.com/2013/04/logback-mdc-and-empty-values.html https://gist.github.com/logogin/ff44c254f655340b653c
我在已经删除的替换模式中有额外的空格。
如:{orgName}) {'[a-z]+
要:{orgName}){'[a-z]+