如何为tomcat设置最大卷数和最大日志大小?

2022-09-01 10:47:54

我有空间问题,所以需要将catalina.out的大小限制为10M,并将卷数限制为3天前。是否可以仅使用配置 logging.properties?谢谢。


答案 1

由于 Tomcat 在内部使用 JUL 来记录 ,因此您可以使用 system 属性来指定属性文件的文件路径。对于此属性文件的格式,您可以参考您的(这是 JUL 使用的默认配置文件)java.util.logging.config.fileJRE_HOME/lib/logging.properties

但是,JUL 不支持每日轮换。如果您不介意,则可以使用它来根据日志 的文件大小轮换日志文件:java.util.logging.FileHandler

# Define the FileHandler 
handlers= java.util.logging.FileHandler

# Configure the FileHandler
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 1024000
java.util.logging.FileHandler.count = 3
java.util.logging.FileHandler.formatter =  java.util.logging.SimpleFormatter
java.util.logging.FileHandler.append=true

然后,每个日志文件将具有限制大小1024000字节(1MB),并且最大滚动到3个输出日志文件。您可以参考 java.util.logging.FileHandler 的 Javadoc 以获取有关配置的详细信息。


如果要使用 JUL 支持每日轮换,则必须插入文件处理程序。我从这个博客中找到了一个自定义的体现。我还没有尝试过。如果您有兴趣,可以参考它。


答案 2

由于至少Tomcat 5.5“Apache Tomcat的内部日志记录使用JULI,这是Apache Commons Logging的打包重命名分支,它被硬编码为使用java.util.logging(JUL)框架。

默认情况下,最新版本的 JULI 和访问日志阀使用 YYYY-MM-DD 日期格式。朱利。FileHandler 日志命名为 {prefix}{date}{sendix},其中 date is yyyy-MM-dd 如果可旋转为 true(默认值)。如果为 false,则删除日期,并且 Tomcat 将不处理文件轮换。还有一个 maxDays 参数来限制将保留的 Tomcat 旋转日志的数量。例如,您可以将它设置为 3,并且只保留三天的日志。

访问日志阀更易于配置。例如,它允许您从默认值y-MM-dd指定fileDateFormat,因此您可以添加HH以每小时旋转一次,或者只是每月轮换一次。您还可以选择将格式化的命名延迟到使用 renameOnRotate 进行旋转。

如果您需要比这更花哨的东西或 JUL 基于大小和计数的旋转,最好将可旋转设置为 false,并在 Tomcat 外部处理旋转。


推荐