Java Logback:有没有一种方法可以有条件地包含分组令牌?

Java Logback:有没有一种方法可以有条件地包含分组令牌?,java,log4j,logback,slf4j,janino,Java,Log4j,Logback,Slf4j,Janino,我注意到Logback有评估者。我只希望包含MDC字段(如果存在)。例如,假设我声明此计算器: <evaluator name="UID_EVAL"> <expression> if(mdc == null || mdc.get("uid") == null) { return false; } else { return true; } </expression> &

我注意到Logback有评估者。我只希望包含MDC字段(如果存在)。例如,假设我声明此计算器:

  <evaluator name="UID_EVAL">
    <expression>
      if(mdc == null || mdc.get("uid") == null) {
        return false;
      } else {
        return true;
      }
    </expression>
  </evaluator>

if(mdc==null | | mdc.get(“uid”)==null){
返回false;
}否则{
返回true;
}
然后,在模式中,我只希望在该计算器为true的情况下包含该值的标记:

<pattern>%eval([uid:%mdc{uid}], UID_EVAL) ...more stuff...</pattern>
%eval([uid:%mdc{uid}],uid\u eval)。。。
注:上述代码不起作用

因此,基本上,如果UID\u EVAL为true,则会显示
[UID:mdc中的字符串]
,但如果为false,则不会显示任何内容


有没有更简单的方法?谢谢

求值器用于筛选。在您的情况下,您可能需要编写一个。求值器用于筛选。在你的情况下,你会想写一个。

你是说你只想记录
uid
,如果它存在,还是另一个字段如果
uid
存在?@Kayaman我只想记录字符串:
[uid:$uid]
如果它存在于MDC中,那么你为什么不记录整个MDC,或者有一些事情你不想同时记录?嗯。。。这是一个很好的观点。我不认为有什么我不想记录的,尽管我更喜欢控制格式。这就是我所做的。毕竟,您需要日志中的所有信息,这样您就可以添加其他字段,而无需担心。默认情况下,格式不是很糟糕,如果没有其他东西可以扩展
MDC
或其他什么的话,你可能也可以对其进行修改。你是说你想只记录
uid
是否存在,或者如果
uid
存在另一个字段?@Kayaman我只想记录字符串:
[uid:$uid]
如果它存在于MDC中,那么您为什么不记录整个MDC,或者您不想同时记录某些内容?嗯。。。这是一个很好的观点。我不认为有什么我不想记录的,尽管我更喜欢控制格式。这就是我所做的。毕竟,您需要日志中的所有信息,这样您就可以添加其他字段,而无需担心。默认情况下,格式不是很糟糕,如果没有其他问题,您可能也可以修改它,看看是否可以扩展
MDC
或其他什么。