[英]Logging sequence calls in WSO2 ESB
我有一個執行許多不同調用的序列模板。 每個調用都會記錄一些參數/信息。
我想要實現的是在序列執行期間將某種標識符(例如,唯一的ID)傳遞給所有調用。
目的是從日志中跟蹤單個執行的所有步驟,主要是為了調試。
實際上,我想到的唯一想法就是以編程方式進行操作,也就是說,在序列的開頭創建一個uid,將其傳遞給它,然后將其保存在log調用中。 我還嘗試弄亂LogMediator,以使其從外部參數中自動提取信息,但是失敗了(也許我做錯了)。
有沒有更聰明的方法可以做到這一點?
您的要求可以通過多種方式實現。 我要提到的是其中一種可能性。
由於這是您將用於調試的另一種方法,因此我認為最好為此使用一個單獨的日志文件。 因此,首先創建一個新的文件追加器,類似於下面給出的。
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
作為參數傳遞。
如前所述,這是可用於創建自定義日志記錄的方法之一。 您可能還需要考慮其他可能性。
如果您需要有關此問題的進一步幫助,請告訴我。
謝謝,
Upul
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.