我使用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()打印到標準輸出或標準錯誤嗎?