我正在使用SaxonJ從Java執行XSLT轉換。將xsl:消息重定向到log4j
我的XSLT文件必須輸出任何調試/信息作爲輸出,因爲我的轉換邏輯很複雜。
有沒有辦法讓我可以重定向到log4j,以便我可以將轉換信息存儲在日誌文件中?
我的系統已經使用log4j將輸出記錄到文件。我想追加轉換調試消息。
任何想法?
我正在使用SaxonJ從Java執行XSLT轉換。將xsl:消息重定向到log4j
我的XSLT文件必須輸出任何調試/信息作爲輸出,因爲我的轉換邏輯很複雜。
有沒有辦法讓我可以重定向到log4j,以便我可以將轉換信息存儲在日誌文件中?
我的系統已經使用log4j將輸出記錄到文件。我想追加轉換調試消息。
任何想法?
我很確定您已經找到了如何執行此操作。但我希望我的回答對其他人有用。
所有你需要做的就是實現MessageListener接口:http://www.saxonica.com/documentation/javadoc/net/sf/saxon/s9api/MessageListener.html
public class MessageListenerImpl implements MessageListener {
private static Logger logger = Logger.getLogger(MessageListenerImpl.class);
public void message(XdmNode content, boolean terminate, SourceLocator locator) {
if (terminate) {
logger.error(content.getStringValue());
System.exit(1);
} else {
logger.warn(content.getStringValue());
}
}
}
您可以配置您自己的信息發射器。有各種不同的接口要做到這一點,例如參見
或有在s9api XsltTransformer類簡單的接口。
任何實例或MESSAGE_EMITTER_CLASS的使用環節。我無法在線找到用法/示例。 我相信這是你如何設置配置 - http://www.saxonica.com/documentation/javadoc/net/sf/saxon/Configuration.html#setMessageEmitterClass%28java.lang.String%29,但你如何實例化配置類? – nija
表面下方總會有一個配置。例如,如果您使用JAXP,則可以從net.sf.saxon.TransformerFactoryImpl獲取它,或者如果您使用XQJ,則可以從SaxonXQDataSource獲取它。 –