Package com.streamconverter.command.rule
Class MdcSetupRule
java.lang.Object
com.streamconverter.command.rule.MdcSetupRule
- All Implemented Interfaces:
IRule
MDC設定用のルール
XMLやJSONなどから抽出した値を、ExecutionContextの共有コンテキストに設定します。 共有コンテキストに設定された値は、全ての並列実行中のコマンドから即座にアクセス可能になり、 applyToMDC()呼び出し時にMDCに反映されます。
使用例:
// ExecutionContextを作成
ExecutionContext context = ExecutionContext.create();
// MdcSetupRuleを使用してXMLからuserIdを抽出してMDCに設定
IStreamCommand xmlNavigate = new XmlNavigateCommand(
TreePath.of("request", "userId"),
new MdcSetupRule(context, "userId")
);
// パイプライン実行
StreamConverter.createWithContext(context, xmlNavigate, otherCommands...)
.run(inputStream, outputStream);
// 全てのコマンドのログに [userId:USER12345] が出力される
スレッドセーフ性: このルールはスレッドセーフです。複数のスレッドから同時に呼び出されても、 ExecutionContextの共有コンテキスト(ConcurrentHashMap)により安全に動作します。
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
MdcSetupRule
MdcSetupRuleを作成します- Parameters:
context- ExecutionContextインスタンスmdcKey- MDCキー名(共有コンテキストのキーとして使用される)- Throws:
NullPointerException- contextまたはmdcKeyがnullの場合
-
-
Method Details
-
apply
抽出された値を共有コンテキストに設定しますこのメソッドは値を変更せずそのまま返しますが、副作用として ExecutionContextの共有コンテキストに値を設定します。 MDCへの同期はLogback TurboFilterが自動的に行うため、呼び出し側は同期を意識する必要がありません。
-
getMdcKey
このルールが使用するMDCキー名を取得します- Returns:
- MDCキー名
-
toString
-