あなたの要件はさまざまな方法で達成できます。私はそれらの可能性の一つを挙げています。
これはデバッグの目的で使用する追加の方法であるため、この目的のために別のログファイルを作成する方がよいと思います。最初に、次のような新しいファイルアペンダーを作成します。
log4j.logger.com.test.CustomDebug=DEBUG, CUSTOM_DEBUG
log4j.additivity.com.test.CustomDebug=false
log4j.appender.CUSTOM_DEBUG = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CUSTOM_DEBUG.File = /home/upul/log/moredebug.log
log4j.appender.CUSTOM_DEBUG.layout = org.apache.log4j.PatternLayout
log4j.appender.CUSTOM_DEBUG.Append = true
次に、CustomDebug
というカスタムメディエーターを作成します。内部mediate()
メソッドはMessageContext
からパラメータを読み取ります。次に、何らかの処理(ある場合)を行い、最後にlog.debug()
を使用してログメッセージを書き込みます。このデバッグメッセージには、上で作成した新しいファイルが書き込まれます(この場合は/home/upul/log/moredebug.log
になります)。
public class CustomDebug extends AbstractMediator {
private static final Log log = LogFactory.getLog(CustomDebug.class);
public boolean mediate(MessageContext mc) {
}
}
次に、あなたのシーケンステンプレートの適切な場所にCustomDebug
クラスメディエーターを挿入し、引数としてuid
を渡します。
これまで説明したように、カスタムロギングの作成に使用できる方法の1つです。あなたは他の可能性も見なければならないかもしれません。
この問題に関してさらに助けが必要な場合は、お知らせください。
おかげで、迅速な答えを
Upul
おかげUpul!すべての呼び出しでMessageContextが変更されるのではないでしょうか?この場合、シーケンスの中にたくさんの呼び出しがあるので、それぞれが異なるuidを持つので、シーケンス全体をトレースすることはできません。私は正しい? – Sibby
@Sibbyはいすべての呼び出しでMessageContextが変更されますが、uidをCustomDebugメディエータに渡すとuid +その他の詳細が記録されます。 (私は私の答えを更新してくださいそれを見てください) –
ありがとう。私はそれを試してみよう – Sibby