標準セットを私のアプリケーションの重要なログポイントすべてに提供できるAPIが必要です。具体的には、(基本的に加えて)次の情報を複数行メッセージのようになります。詳細な(複数行の)ログ用のJavaロギングAPI
- ログカテゴリ
- 短い説明タイトル
- 説明
- レスポンスアクション(ダメージコントロール)私のアプリケーションは、電子のために、探して単一のマルチラインログで
(など例外情報、)
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);
何I探していたとてもかっこいい。しかし、私はJBossを使用していません(また、そのAPIにロックしたくない)。
私はLOG4Jを使用することができます。これは、レイアウトで使用できるStructuredDataMessage and Structured Data Lookupを持っています。私はデフォルトでそれを使用して終了します。私のコードはこれを解決するためにStructuredDataMessage
工場に委譲することができます。しかし、このJBoss APIのようなものを使用するよりも少し嵩張ります。
他のAPI、コードパターン、または気の利いたトリックなど、誰でもこの問題の提案がありますか?
あなたは何らかのコンテナで動いていますか?あなたはパターンでそれを行う可能性がありますが、使用しているログマネージャに依存する可能性があります。 –