我有一个基于Java GUI的应用程序,该应用程序将一些诊断消息写入System.out和System.err。在Windows上运行时,这些消息在哪里输出? (例如,在Mac OS X上,它们被打印到系统控制台日志中。)

编辑

我应该补充说Java应用程序打包为.exe,所以(现在)我不能使用java启动它。 (我想我可以将单个.JAR文件复制到Windows测试机上。)

另外,这是我继承的应用程序,以前没有使用日志记录框架。我想对其进行修改以使用其中一个,但是我希望现在可以快速获取一些日志输出以诊断问题。

最佳答案

这实际上取决于您如何启动应用程序。例如,如果要从Windows命令行提示符(例如java -jar myApp.jar)启动GUI,那么您可能希望System.out和System.err都进入控制台。如果您是通过Windows Shell本身启动的(例如,双击可执行的JAR),则据我所知,这些错误流将丢失。将应用程序的执行设置为服务(但是在您遇到的情况下听起来不太可能)也会丢失输出流。

通常,在输出流中使用标准不是一个好主意,除非您希望在shell脚本类型的环境中调用程序,在这些环境中这些是常见的通信 channel ,所以请不要使用它。如您所知,这些通常在GUI环境中定义不佳。如果您确实想在程序运行时捕获文本信息,请考虑使用“真实的”日志记录框架(例如log4j或java.util.logging包)将消息捕获到日志中。

10-07 19:52
查看更多