2017-09-26 79 views
0

我需要登錄一個消息,根據我得到的登錄信息兩個不同的標記 比如我這個模式:的Log4j 2自動標記選擇

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

你可以使用%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: }{}