2016-01-06 24 views
2

環境如何登錄異常堆棧跟蹤中JSON對象具有了與log4j2

我已經在我的應用程序中實現log4j成功突破。我使用了以下模式loayout:

{"a":"%X{Id}","b":"%d","message":"%m","priority":"%p","Exception":"%ex"} 

它使用我的自定義屬性記錄爲json格式。

但是,當使用%ex記錄異常時,它正在打印整個跟蹤,我想要但它打破了json格式。

問題

所以,可以請你建議我把整個堆棧跟蹤,JSON沒有打破。

+0

你使用[JSON佈局](https://logging.apache.org/log4j/2.x/manual/layouts.html #JSONLayout)Log4j2? – Robert

+0

爲什麼不在Log4j 2問題跟蹤器上提出這個問題? https://issues.apache.org/jira/browse/LOG4J2 –

回答

0

StrackTrace包含新的線字符..這可能會打破JSON ...爲什麼不使用getMessage()來代替。

+0

嘿,謝謝你的快速回復。但我使用log4j的模式佈局屬性(默認)。 %ex記錄整個異常(以確定發生的所有事情),所以請讓我知道如果你知道任何東西來刪除新的線字符。 – Balaji

0

您可以使用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

+0

嗨,感謝您的快速回復。但我使用log4j的模式佈局屬性(默認)。 %ex記錄異常,所以我需要任何預先定義的attributs刪除新的線字符。 – Balaji