我需要根据我登录的信息记录带有两个不同标记的消息。 例如,我有这种模式:
ts: %d{yyyy-MM-dd HH:mm:ss,SSS} | logLevel: %-5level | appId: example-app-id | thread: (%t) | SID: %X{SID} | TN: %X{TN} | clientIp: %X{clientIp} | username: %X{user} | apiType: B2B | api: %X{api} | platform: %X{platform} | %m%n
但我想只有当用户名和api不为空或空时才会记录此模式。 否则,我想用这种模式登录:
ts: %d{yyyy-MM-dd HH:mm:ss,SSS} | logLevel: %-5level | appId: example-app-id | thread: (%t) | SID: %X{SID} | TN: %X{TN} | %m%n
如何通过每次检查这些信息来影响代码而不影响代码? 感谢
答案 0 :(得分:0)
您可以使用%equals模式,实际上log4j2 manual Pattern page有一个示例,告诉您如何完全按照您的需要进行操作。
在您的具体情况下,您将替换:
| username: %X{user} | apiType: B2B | api: %X{api}
有了这个:
%equals{| username: %X{user}}{| username: }{} | apiType: B2B %equals{| api: %X{api}}{| api: }{}