我想找到一個API,它允許我在我的應用程序的所有關鍵日誌點中提供特定的規範集信息。更具體地,這將是具有以下信息(除了基本的)多行消息:用於詳細(和多行)日誌的Java日誌API
- 日誌類別
- 簡要說明標題
- 說明
- 響應操作(損傷控制)我的應用程序將採取
- 詳細信息(異常信息等)
有了一個單一的多行日誌看,爲電子商務xample,像這樣:
2017-11-10 14:26:59,156 [main] WARN o.s.t.c.s.ExampleClass:
Caption: Unconformable data
Description: The data provided from the X datasource in order to perform Y operation could not be translated
Response Action: Application will discard unusable data into this component's DLQ
Details: The data string "x" was not of expected Integer type
<Some stacktrace>....
這是一個冗長的聲明,這將是對什麼發生,它發生了,什麼應用程序響應異常的情況下,這樣做非常豐富。
我能找到的最接近的是JBoss日誌API和我在ActiveMQ Artemis source中找到的一些代碼示例。 消息格式聲明可以在一個單一的文件中定義,像這樣:
@LogMessage(level = Logger.Level.WARN)
@Message(id = 202008, value = "Failed to check Address list {0}.",
format = Message.Format.MESSAGE_FORMAT)
void failedToParseAddressList(@Cause Exception e, String addressList);
而且人會通過書面形式記錄在他們的代碼line with this message:
ActiveMQUtilLogger.LOGGER.failedToParseAddressList(e, addressList);
這是我能找到的最接近的是我正在尋找。很酷。但是,我沒有使用JBoss(也不想鎖定該API)。
我可以使用LOG4J,它有一個StructuredDataMessage and Structured Data Lookup它可以在一個佈局中使用,我會默認最終使用它;我的代碼可以委託一些StructuredDataMessage
工廠來解決這個問題。然而,這比使用這個JBoss API更笨重一點。
有沒有人對此問題有任何建議 - 無論是另一種API,代碼模式還是漂亮的技巧?
你在某種容器中運行嗎?你可能會用一種模式來做,但它可能取決於你使用的日誌管理器。 –