是否有任何日誌記錄庫允許結構化記錄對象,我的意思是說,輸出結構化的形式,如JSON或XML?我該如何做結構化記錄?
在應用層面,我想用一個簡潔的語法(日誌往往隱藏應用程序代碼),如
logger.info("Deleting user", user)
logger.info(part("Deleting user", user), part("Account", account), part("Something else", someValue));
在日誌文件的級別,我把結構良好的JSON(等)與元數據(線程,MDC,時間,級別等)一起作爲一個信封,並將我自己的消息作爲結構化的JSON對象,例如
"log" : {
"time": <timestamp>,
"level": "INFO",
"thread": <thread-name>,
"MDC": [MDC info added by application code],
etc...
"message": {
"Message": "Deleting User",
"User": <JSON object of the user serialised>
}
}
當然,它不需要漂亮地打印在日誌文件中。
如果域對象(例如用戶)可以實現具有用於不同日誌級別的狀態序列化的方法的接口,那將是很酷的。
- INFO級別給出了總結
- DEBUG級別提供了更多,更深入的數據,遞歸
*有些日誌聚合可以再進行日誌的意義在語義水平。日誌格式一致,允許搜索等*
我在過去已經實現了幾個函數,這些函數讓我成爲其中的一部分,以確保鍵/值對被格式化,但不會給我我想要的一切。這工作,標準化鍵/值,格式化值,突出空值等,但它不會發出JSON,不能委託對象格式: -
logger.info(logString(part("Deleting user", user), part("Account", account), part("Something else", someValue)));
任何想法?
嘗試https://github.com/michaeltandy/log4j-json –
@DavidKerr要JSON字符串結構像你上面的豪宅? –
@MayankPandya這是一個開始,但它只是將元數據放入JSON中,它不會將我的對象構造成JSON(我的示例JSON的「消息」部分)。 –