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

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

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

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

至少从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},其中如果rotate为true,则date为yyyy-MM-dd(默认值)。 如果为false,则删除日期,Tomcat将不处理文件轮换。 还有一个maxDays参数来限制将保留的Tomcat旋转日志的数量。 例如,您可以将其设置为3,并且只保留三天的日志。

Access Log Valve更易于配置。 例如,它允许您从默认的yyyy-MM-dd指定fileDateFormat,因此您可以添加HH以每小时轮换一次,或者只是每月轮换一次。 您还可以选择延迟格式化命名,直到使用renameOnRotate旋转。

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