31

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

4

2 回答 2

42

由于 Tomcat 内部使用 JUL 进行日志记录,您可以使用系统属性java.util.logging.config.file来指定属性文件的文件路径。这个属性文件的格式可以参考你的JRE_HOME/lib/logging.properties(JUL默认使用的配置文件)

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

# 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 支持每天轮换,则必须实施文件处理程序。我从这个博客中找到了一个自定义实现。我还没试过。有兴趣的可以参考一下。

于 2011-12-01T15:17:16.053 回答
1

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

最新版本的 JULI 和 Access Log Valve 默认使用 YYYY-MM-dd 日期格式。juli.FileHandler 日志被命名为 {prefix}{date}{suffix} 如果 rotatable 为真(默认),则日期为 yyyy-MM-dd。如果为 false,则删除日期并且 Tomcat 将不处理文件轮换。还有一个 maxDays 参数来限制将保留的 Tomcat 轮换日志的数量。例如,您可以将其设置为 3,并且只保留三天的日志。

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

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

于 2018-09-21T22:22:52.447 回答