如果 Tomcat 停止,删除 catalina.out 是否安全?

Is it safe to delete catalina.out if Tomcat is stopped?

我的 catalina.out 文件有 37 GB,这似乎阻止了我的应用 运行 在 linux (Centos) 服务器上正确运行,因为该文件占用了我所有的服务器 space.我从没想过日志文件会变得这么大。停止 Tomcat (Tomcat9) 并删除 catalina.out 是否安全(我没有测试服务器可以尝试)?当我再次启动 Tomcat 时是否创建了一个新的 catalina.out 文件?

或者这样做会更好吗

 sudo echo > catalina.out

如所述。该命令的实际作用是什么?

我需要停止 Tomcat 以不时更新我的​​应用程序,我不需要存储旧的日志文件。那么保持 catalina.out 小的最佳方法是什么?

您可以安全地截断(即用空字符串替换内容)catalina.out 文件,即使 Tomcat 是 运行,这可以通过多种方式完成:

cat > catalina.out
# or
truncate catalina.out

删除文件,虽然 Tomcat 已关闭也可以,但在 运行 Tomcat 上它会产生很大的副作用:Tomcat 仍将附加数据到已删除的文件,space 将不会释放,直到 Tomcat 关闭。

为了保持 catalina.out 小,您应该:

  • logging.properties中删除ConsoleHandler.handlershandlers):记录到ConsoleHandler的数据也记录到catalina.<date>.log,
  • 确保您的应用程序的日志系统不会记录标准 output/standard 错误,而是记录到正确旋转的文件。

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

tomcat服务器停止时删除/移动catalina.out完全没有问题。

但是在 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了解更多 关于此的信息。