java - System.out.println 在服务器上打印

标签 java eclipse logging jboss

使用eclipse:

当我们通常在java文件中sysout任何内容时,它会在eclipse控制台上打印,但是当我们的应用程序部署在Jboss上时,sysout会在服务器控制台和服务器日志上打印该值。是什么导致了这种变化?

例如: 在独立的普通Java程序中

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

但是,如果我在 java 文件(即 Web 应用程序的一部分)中编写相同的句子,并且该应用程序部署在 JBoss 上,则该值将打印在 JBoss 控制台和服务器日志上。

我所知道的是“out”指的是系统控制台,因此如果我输出任何内容,它应该写入系统的控制台。那么为什么如果 Web 应用程序部署在 JBoss 上,它会在服务器控制台上写入。

最佳答案

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

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

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

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

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

<小时/>

因此,要准确了解发生了什么,您需要查看如何启动 JBoss。

但它并没有什么特别神秘的。

关于java - System.out.println 在服务器上打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450116/

相关文章:

java - 使用注释处理生成单元测试

eclipse - 如何在egit的历史 View 中显示标签?

java - Android AlertDialog 教程报错 - Blank Application

java - 这需要 JAR 文件吗?

java - 如何遍历 TreeMap?

java - 强制带注释的类包含带注释的字段

python - 如何将记录器级别作为字符串值

logging - 是否可以对fluentd收集的kubernetes pod日志进行分类?

java - Java 是否保证 getClass() 返回的 Class 对象始终是同一个实例?

android - 哪个 Android IDE 更好——Android Studio 还是 Eclipse?