我使用Saxon 9来执行Java中的XSL转换。如果在转换过程中出现错误,Saxon会将输出导向其所运行的JVM的标准错误流。我的Java应用程序有标准输出和错误的日志记录机制。我如何强制Saxon使用错误输出流而不是JVM默认错误输出流?如何在Java中更改Saxon的标准错误输出流?
2
A
回答
2
撒克逊将错误转移到javax.xml.transform.ErrorListener对象。最初,这些对象中有一个将异常写入stderr,但您可以轻松创建新的ErrorListener对象并实现它的warning
,error
和fatalError
方法,以将它们发送到您的自定义日志记录机制。
如何设置新的ErrorListener取决于whether you are using the JAXP interface or the s9api interface。对于JAXP接口,您可以在Transformer对象上调用setErrorListener
。对于s9api接口,您可以在创建处理器时或在XsltCompiler对象或XsltTransformer对象上提供的配置对象上使用setErrorListener
方法。无论如何,其中有几个。
像这样的东西(s9api):
final PrintStream logFile =
new java.io.PrintStream("errorlog.txt"); // for example
Configuration configuration = new Configuration();
configuration.setErrorListener(new ErrorListener() {
@Override
public void warning(TransformerException exception) throws TransformerException {
exception.printStackTrace(logFile); // or wherever
}
@Override
public void error(TransformerException exception) throws TransformerException {
exception.printStackTrace(logFile);
}
@Override
public void fatalError(TransformerException exception) throws TransformerException {
exception.printStackTrace(logFile);
}
});
Processor proc = new Processor(configuration);
...
如果你不想使用标准错误程序中的事情,虽然,它可能会更好,只是把它重定向程序范围内使用System.setErr:
System.setErr(new java.io.PrintStream("errorlog.txt"));
它需要一个PrintStream对象,您可以环绕任何类型的输出/流,因此我确信它可以用于您的自定义日志记录机制。
相关问题
- 1. 在Java中更改标准输出
- 2. 在Perl中处理Java标准输出和标准错误
- 3. 在Python中的流标准输出/标准输出
- 4. 流的Java标准输出到perl STDOUT
- 5. 如何如果标准输出没有活动/标准错误
- 6. Java:同步标准输出和标准错误
- 7. 是否有可能输出到监视流而不是标准输入,标准输出和标准错误? (python)
- 8. 保存标准输出,标准错误和标准输出+标准错误同步
- 9. 如何更改另一程序的标准输入/输出?
- 10. 流标准输出到s3
- 11. 重置标准输出流
- 12. Apache标准输出流
- 13. 如何修改标准输出?
- 14. 更改geom_smooth的标准错误颜色
- 15. 捕获标准错误和标准输出的好方法
- 16. 如何从标准输入输出中的Java
- 17. 在标准输入,标准输出和标准错误中的监视器字节C
- 18. 如何捕获Windows服务的标准错误输出?
- 19. 如何捕获过程的标准输出/错误?
- 20. 将Python标准输入流更改为Windows控制台输入
- 21. 如何更改此代码以写入标准输出?
- 22. 模板类的标准流输出
- 23. 发送JVM -verbose输出到标准错误而不是标准输出
- 24. 标准错误重定向到标准输出
- 25. 暂时路线标准输出/标准错误安慰
- 26. bash脚本不捕获标准输出,只是标准错误
- 27. 关于标准输出/标准错误重定向
- 28. 检查标准输出或标准错误
- 29. 从Jython控制标准输出/标准错误
- 30. Python traceback.print_exc()打印到标准输出或标准错误吗?