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

时间:2011-12-01 13:45:36

标签: java tomcat log4j java.util.logging

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

2 个答案:

答案 0 :(得分:37)

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

然而,JUL does not support the daily rotation。如果您不介意,可以使用其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每天支持轮换,则必须实现文件处理程序。我从this blog找到了一个自定义实现。我还没试过。如果您有兴趣,可以参考。

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

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

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