Tomcat 9 - catalina.out 日志文件丢失且控制台打印输出未显示在任何地方

Luc*_*ian 8 logging web-applications tomcat9

Tomcat9 部署在 Ubuntu 18.04 上。此问题仅适用于 Tomcat 版本 9。有一个 catalina。日期.log 文件存在于日志文件夹中,但它不显示来自我们的 Web 应用程序的任何控制台打印输出。

我已经在 logging.properties 中将 ConsoleHandler 级别设置为 ALL,但仍然没有日志。

任何指针,想法?谢谢!

Pio*_*asz 7

Ubuntu 18.04(和 Debian 10)上的tomcat9软件包使用 systemd.service文件。默认情况下,它们将 Tomcat 的stdoutstderr重定向到带有程序名称的系统日志tomcat9。在 Debian 10 中,RSyslog配置为将这些写入/var/log/tomcat9/catalina.out,但在您的情况下可能并非如此。

所以你至少有两个解决方案:

  1. 读取输出systemd-journald

    journalctl -u tomcat9.service
    
    Run Code Online (Sandbox Code Playgroud)

    您可能想让日志存储持久化(CentOS 的解决方案也适用于 Ubuntu)。

  2. 修改.service文件以将输出重定向到/var/log/tomcat9/catalina.out

    systemctl edit --full tomcat9.service
    
    Run Code Online (Sandbox Code Playgroud)

    并按照StackOverflow 上说明进行操作

请注意,通过System.out.println和类似方式“记录”是不好的做法,因为您无法控制记录的内容和方式。swallowOutput如果要将这些语句发送到 ,则可以在上下文中使用该属性java.util.logging。通过ServletContext#log()java.util.logging记录的所有消息都以catalina.<date>.log或结束localhost.<date>.log