将xsl:消息重定向到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获取它。 –