Tomcat catalina.out 增长直到服务器崩溃

Tomcat catalina.out grows until server crashes

我在 CentOS Linux 上有一个 Tomcat7 网络服务器 运行。 Tomcat 默认配置为将所有 System.out 写入 /logs/catalina.out 文件。它不会旋转或 trim 此文件,因此它最终会超过最大文件大小并导致 Web 服务器崩溃。

鉴于这似乎不是一个好主意...如何防止这种情况发生?

我发现, catalina.out rolling with Tomcat 6.0

并且我像上面说的那样配置了我的 logging.properties,但这似乎不起作用,也许它阻止了 Tomcat 记录到 catalina.out,但仍然每隔一个 [=24] =] 写入文件。

奇怪的是我有两台相同的服务器,配置方式完全相同,但一台正在写入 catalina.out,另一台则没有??

好吧,这就是我想出的。

  • 开始tomcat
  • 删除 catalina.out 文件

现在它将不再写入文件。这似乎有效。简单,但是一个黑客。谁有更好的解决方案?

查看部署在您的 webapps 文件夹中的所有应用程序的内容。 在你的 catalina.out 中写的那个可能在 web-inf/lib/classes 中有一个 logging.properties 文件。

该文件中是否有配置为写入 ConsoleHandler 的处理程序。

试试这个。

此时复习主题 Considerations for production usage

如果在tomcat停止后删除catalina.out,一旦tomcat再次启动,它会创建一个新的catalina.out并且是完全安全的。如果您在 tomcat 为 运行ning 时删除 catalina.out,它将继续记录到已经删除的 catalina.out(文件的引用由 tomcat) 因此 space 将不会被释放。所以你需要重启 tomcat 服务器来释放 space。不推荐。

但在 public 使用的 运行ning on tomcat 的关键应用程序中,这不是一个好的解决方案,因为会出现停机时间。

因此,您可以使用以下命令在不停止 tomcat 的情况下清除 catalina.out 文件的日志。

sudo cat /dev/null > /opt/tomcat/apache-tomcat-9.0.37/logs/catalina.out  

要使 catalina.out 更小并删除旧日志,可以使用以下任一方法:

  1. 您可以使用上面的 Linux 命令并将其添加到 CronScheduler 到 运行 每天/每周/每月或每年一次。

  2. Linux 中使用 logrotate 工具。这是一个日志管理 command-line 工具 在 Linux。这可以在不同条件下轮换日志文件。 特别是,我们可以在固定的持续时间内轮换日志文件,或者如果 文件已增长到一定大小。您可以单击here了解更多 关于此的信息。