Java 如何为tomcat设置最大卷数和最大原木尺寸?

Java 如何为tomcat设置最大卷数和最大原木尺寸?,java,tomcat,log4j,java.util.logging,Java,Tomcat,Log4j,Java.util.logging,我的空间有问题,所以需要限制catalina.out的尺寸为10米,限制前三天的卷数。 是否可以只配置logging.properties? 谢谢。由于Tomcat在内部使用JUL进行日志记录,您可以使用系统属性java.util.logging.config.file来指定属性文件的文件路径。有关此属性文件的格式,您可以参考JRE_HOME/lib/logging.properties(这是JUL使用的默认配置文件) 然而。如果您不介意,您可以使用其java.util.logging.File

我的空间有问题,所以需要限制catalina.out的尺寸为10米,限制前三天的卷数。 是否可以只配置logging.properties?
谢谢。

由于Tomcat在内部使用JUL进行日志记录,您可以使用系统属性
java.util.logging.config.file
来指定属性文件的文件路径。有关此属性文件的格式,您可以参考
JRE_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个输出日志文件。有关配置的详细信息,请参阅的Javadoc


如果您想使用JUL支持每天的轮换,就必须执行文件处理程序。我从中找到了一个自定义实现。我还没有试过。如果您有兴趣,可以参考它。

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

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

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

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


是的,但问题是关于3天,而不是3个文件。是的,你是对的。我误解了问题。JUL似乎没有内置的处理程序每天旋转日志。为什么将限制设置为2^10*1000,这似乎有点随机?为什么不使用1MB(1000000字节)或1MB(2^20/1048576字节)在使用轮换时,您可能希望使用%g:“%g”代数来区分轮换日志“如何根据大小轮换tomcat访问日志(localhost_access*)呢?我知道这是一篇老文章,但我更喜欢在这个网站上找到所有答案,我只想补充一点,你也可以跟随。它很容易在Unix机器中实现。大多数基于属性的日志记录配置都无法处理组合天数和大小,而且组合并不总是直观的。基于大小的日志文件可能跨越几分钟或几个月。如果您有一个大小目标,那么大小*旋转次数将使您保持在该限制内。如果您需要保留X天,则可能需要留出更多空间。