我已經在我的應用程序中實現log4j
成功突破。我使用了以下模式loayout:
{"a":"%X{Id}","b":"%d","message":"%m","priority":"%p","Exception":"%ex"}
它使用我的自定義屬性記錄爲json格式。
但是,當使用%ex記錄異常時,它正在打印整個跟蹤,我想要但它打破了json格式。
問題
所以,可以請你建議我把整個堆棧跟蹤,JSON沒有打破。
我已經在我的應用程序中實現log4j
成功突破。我使用了以下模式loayout:
{"a":"%X{Id}","b":"%d","message":"%m","priority":"%p","Exception":"%ex"}
它使用我的自定義屬性記錄爲json格式。
但是,當使用%ex記錄異常時,它正在打印整個跟蹤,我想要但它打破了json格式。
問題
所以,可以請你建議我把整個堆棧跟蹤,JSON沒有打破。
StrackTrace包含新的線字符..這可能會打破JSON ...爲什麼不使用getMessage()來代替。
嘿,謝謝你的快速回復。但我使用log4j的模式佈局屬性(默認)。 %ex記錄整個異常(以確定發生的所有事情),所以請讓我知道如果你知道任何東西來刪除新的線字符。 – Balaji
您可以使用JSON庫爲此,像這樣:
JSONObject object = new JSONObject();
object.put("ID", idVariable);
object.put("Exception", exceptionVariable);
object.put("Priority", priorityVariable);
object.toString();
或使用:
object.toString(2);
縮進(代碼)
然後,您可以使用對象將其傳遞給方法的Log4j的記錄器
庫JSON發現這裏JSON Library
嗨,感謝您的快速回復。但我使用log4j的模式佈局屬性(默認)。 %ex記錄異常,所以我需要任何預先定義的attributs刪除新的線字符。 – Balaji
在log4j的Patternlayout
配置你可以使用%enc{%ex}{CRLF}
,其分別代替\n
和\r
,分別代替\\n
和\\r
。
適用於你的樣品:
{"a":"%X{Id}","b":"%d","message":"%m","priority":"%p","Exception":"%enc{%ex}{CRLF}"}
https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout
你使用[JSON佈局](https://logging.apache.org/log4j/2.x/manual/layouts.html #JSONLayout)Log4j2? – Robert
爲什麼不在Log4j 2問題跟蹤器上提出這個問題? https://issues.apache.org/jira/browse/LOG4J2 –