java - 为什么Tomcat STDOUT 总是指向/dev/null?

标签 java tomcat log4j

我们很高兴地运行了三台 CentOS 服务器,每台服务器都在 Tomcat 实例(UAT、演示和生产)上部署了相同的应用程序。我们在应用程序中使用 Log4j 来输出到标准的 CATALINA_HOME/logs/catalina.out 文件。这在 UAT 和演示服务器上完美运行,但在生产服务器上,我们在该文件中获得输出,直到启动过程结束,但从未输出任何应用程序日志记录。

使用 LSOF 我可以看到 STDOUT 总是指向/dev/null。即使在明确启动 Tomcat 时附加了 >> $CATALINA_OUT 2>&1 &,它最终还是指向/dev/null。我可以在其他服务器上看到它指向正确的 catalina.out 文件。

我已经在服务器上重新部署了 tomcat,并直接从工作的 UAT 实例中复制了配置文件,我现在正在摸不着头脑。有什么想法吗?

最佳答案

您如何“使用 >> $CATALINA_OUT 2>&1 & 附加到它来启动 Tomcat”?

您是否 100% 确定没有人修改 bin/startup.shbin/catalina.sh 以添加 /dev/null 行为?

与您的核心问题无关,但我强烈建议使用 log4j 配置写入文件 (FileAppender),而不是登录到标准输出 - 这为您提供了基于基础滚动文件的选项在日期/尺寸/等上,很容易更改位置等。登录到标准输出不会给您这种灵 active 。

关于java - 为什么Tomcat STDOUT 总是指向/dev/null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5652125/

相关文章:

maven - Soap spring boot wsdl 生成的应用程序失败,显示 404 无可用消息

java - Wildfly 10.0.0 最终版是否像Tomcat一样支持OCSP?

java - Hibernate 抑制信息消息

java - 如何更改从我实现的接口(interface)重写到我正在使用的具体类中的方法的签名?

java - Java 中的静态方法是否总是在编译时解析?

java - Spring Integration - 网关 - 拆分器 - 带有 JMS 的聚合器

java - 如何以其他方式使用公共(public)静态扫描仪? (下一行());

Tomcat 9 HTTP2 连接器在使用 ResponseEntity 发送字节数组时遇到问题

java - 将第三方库的 Log4j 日志路由到 Log4j2

maven - Log4j 冲突 - 提供的容器和项目级别