【问题标题】:How to set maximum number of rolls and maximum log size for tomcat?如何为tomcat设置最大卷数和最大日志大小?
【发布时间】:2012-01-10 15:45:21
【问题描述】:

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

【问题讨论】:

  • 我知道这是一篇旧帖子,但由于我更喜欢​​在这个网站上找到所有答案,我只想补充一点,您也可以关注this alternative。在Unix机器上很容易实现
  • 大多数基于属性的日志记录配置不处理组合天数和大小,并且组合并不总是直观的。基于大小的日志文件可能跨越片刻或几个月。如果你有一个尺寸目标,那么尺寸 * 旋转次数会让你保持在这个限制内。如果您需要保留 X 天,那么您可能需要留出更多空间。

标签: java tomcat log4j java.util.logging


【解决方案1】:

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

最新版本的 JULI 和访问日志阀默认使用 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 外部处理旋转。

【讨论】:

    【解决方案2】:

    由于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 找到了一个自定义实现。我还没试过。有兴趣的可以参考一下。

    【讨论】:

    • 是的,但问题是大约 3 天,而不是 3 个文件。
    • 是的,你是对的。我误读了这个问题。 JUL 似乎没有内置的处理程序来每天轮换日志。
    • 为什么将限制设置为 2^10*1000,这似乎有点随机?为什么不是 1MB(1000000 字节)或 1MiB(2^20 / 1048576 字节)
    • 在使用轮换时,可能要使用 %g: '"%g" 世代号来区分轮换日志'
    • 如何根据大小轮换tomcat访问日志(localhost_access*)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多