java - 在外部使用 Tomcat 从 IntelliJ 运行 Web 应用程序时,发送到 System.err 的消息去哪里了?

标签 java tomcat intellij-idea servlets system.err

我正在使用 IntelliJ 2019.3 终极版 IDE运行我的 Vaadin网络应用程序通过 Apache Tomcat web container .

当消息发送到 System.err 时比如:

System.err.println( "My message goes here." ) ;

...该消息落在何处?

在 IntelliJ 中显示的控制台上,我看到我发送到 System.out 的消息.但是发送到 System.err 的消息无法出现在同一个控制台上。

最佳答案

再次检查那个控制台

消息确实应该出现在 IntelliJ 的同一个控制台中。

您可能没有注意到有几个原因:颜色和顺序。

彩色

注意着色。鉴于 System.err 中的 err 表示“错误”,IntelliJ 将此类消息着色为红色墨水。

Vaadin 生成大量不同颜色的文本。您的眼睛可能会跳过那些彩色 block ,寻找其他颜色(例如在黑暗模式下黑色背景上的白色墨水)。

点击放大下面这段代码创建的截图:

System.out.println( "BASIL sout - " + message );
System.err.println( "BASIL System.err message" );

注意第 3 和 5 行。

  • 红色的第 3 行 来自对 System.err 的调用。
  • 白色的第 5 行 来自对 System.out 的调用。

(第 4 行来自对 Simple 日志框架的 SLF4 实现的调用,与此处无关。)

Screenshot of console in IntelliJ in dark mode, showing System.err messages as red text while System.out messages use white text.

乱序外观

您可能由于另一个原因没有注意到您的消息:它们到达控制台的顺序可能与您在 Java 代码中调用的顺序不同。

再次查看上面的屏幕截图。第 3 行和第 5 行乱序出现:我们在 Java 中的第二次调用首先出现在控制台输出中(我不知道为什么)。

关于java - 在外部使用 Tomcat 从 IntelliJ 运行 Web 应用程序时,发送到 System.err 的消息去哪里了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59132401/

相关文章:

java - 在我的应用程序创建的文件夹中驱动 API 自己的文件

java - ExecutorService 和 Lambdas - .execute(() -> ...) 和 .execute() 之间的区别

intellij-idea - 使用 IntelliJ IDEA 构建 Gradle 多模块的正确结构

java - 如何使用 IntelliJ 重构重命名 maven pom artifactId?

java - 在 Java 中启用英特尔超线程

java - java中同一行的多个输入

java - 在 Tomcat 7 中是否需要将 context.xml 复制到 conf/Catalina/locahost 中才能生效

java - tomcat jar java 仅适用于 8080

jakarta-ee - java.io.WriteAbortedException : writing aborted; java. io.NotSerializableException 异常

java - 让 IntelliJ 解析同一项目中模块的依赖关系