2014-10-19 118 views
1

使用Eclipse:的System.out.println打印服务器

当我们通常在Java文件系统输出任何东西,它打印在Eclipse控制台,但是当我们的应用程序部署在JBoss则系统输出打印在服务器控制台的值和服务器日志。这是什么,这使得这个改变?

对于如: 在独立的普通Java程序

System.out.println("Java is Wonderful") Eclipse控制台上打印

但是,如果我写的同一个句子中的Java文件,即Web应用程序的一部分,应用程序部署在JBoss上,这个值被打印在JBoss控制台和服务器日志上。

我知道的是“out”是指系统控制台,所以如果我sysout什么,它应该写入系统的控制台。那么为什么在JBoss上部署Web应用程序的情况下,它会在服务器控制台上写入。

回答

2

System.out的值作为运行应用程序的JVM的“标准输出”流开始。

  • 当您运行在Eclipse的应用程序,Eclipse已经使用System.setOut(...)到写入Eclipse控制台流。

  • 当您从Eclipse启动JVM时,该JVM的System.out将开始返回到Eclipse控制台。 JVM 中的应用程序可能会然后使用System.setOut(...)更改它。

  • 当您从命令行启动JVM时,JVM的System.out将开始返回到shell的控制台。

  • 对于像JBoss这样的东西,启动脚本(或本机启动器)很可能会在启动应用程序之前更改标准输出流。应当记录的地方...


所以要找出到底是怎么回事,你就需要看你如何推出的JBoss。

但是没有什么特别的神秘。

0

您的服务器的启动脚本可能包含类似...> stdout.txt 2> stderr.txt...> allout.txt 2>&1。它在类Unix操作系统中重新引导标准IO。其他操作系统具有相似的命令。