将xsl:message重定向到log4j

时间:2011-09-30 07:23:06

标签: java log4j xslt

我正在使用SaxonJ从Java执行XSLT转换。

我的XSLT文件必须输出任何调试/信息作为输出,因为我的转换逻辑很复杂。

有没有办法可以重定向到log4j,以便我可以在日志文件中存储转换信息?

我的系统已经使用log4j将输出记录到文件中。我也想附加转换调试消息。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我很确定你已经知道如何执行此操作。但我希望我的回答对其他人有用。

您需要做的就是实现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());
        }
    }
}

答案 1 :(得分:1)

您可以配置自己的Message发射器。有多种接口可以做到这一点,例如参见

http://www.saxonica.com/documentation/javadoc/net/sf/saxon/lib/FeatureKeys.html#MESSAGE_EMITTER_CLASS

或者s9api XsltTransformer类中有一个更简单的接口。