如果在MDC上设置了值,如何在log4j条目上打印键/值对?
例如,我目前有以下模式:
%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - client=%X{client} %m%n
Run Code Online (Sandbox Code Playgroud)
我想打印"client ="部分只有在MDC上有这个键的值时才会打印.
例如,在启动我的程序时,将没有客户端登录,因此将使用此模式记录日志:
%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)
但是,在客户端登录后(以及在我使用"客户端"密钥设置MDC之后),我需要使用以下内容进行打印:
%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - client=%X{client} %m%n
Run Code Online (Sandbox Code Playgroud)
log4j上有这样的"条件模式"吗?
谢谢
bno*_*orm 10
%notEmptyLog4j2中有一个模式可以使您准确地实现这一目标。
%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %notEmpty{client=%X{client} }%m%n
Run Code Online (Sandbox Code Playgroud)
我最终使用了xav的建议。
我从log4j模式中删除了“ client =”字符串,并在每次向MDC添加条目时都附加了它。这不是最漂亮的解决方案,但效果很好!
例如,在其他情况下我会使用
MDC.put("client", client.getId());
Run Code Online (Sandbox Code Playgroud)
我现在正在使用:
MDC.put("client", "client="+client.getId().toString());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2716 次 |
| 最近记录: |