我们很高兴地运行了三台 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.sh
或 bin/catalina.sh
以添加 /dev/null
行为?
与您的核心问题无关,但我强烈建议使用 log4j 配置写入文件 (FileAppender
),而不是登录到标准输出 - 这为您提供了基于基础滚动文件的选项在日期/尺寸/等上,很容易更改位置等。登录到标准输出不会给您这种灵 active 。
关于java - 为什么Tomcat STDOUT 总是指向/dev/null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5652125/