如何配置 Tomcat JULI 日志记录以滚动日志文件?

Posted

技术标签:

【中文标题】如何配置 Tomcat JULI 日志记录以滚动日志文件?【英文标题】:How to configure Tomcat JULI logging to roll log files? 【发布时间】:2010-09-13 06:32:18 【问题描述】:

我有几个使用 java.util.logging 的 webapp。 Tomcat 5.5 被配置为使用 Juli 记录器,因此每个 webapp 都有自己的日志文件。问题是 Juli 没有最大文件大小和文件数的属性。使用 Juli,文件将无限增长,并且只会在一天结束时滚动。此外,还会保留无限数量的日志文件。

您可以在此页面上查看 FileHandler 属性 - Apache Tomcat 5.5 Documentation 没有限制或计数属性(以下几行什么都不做)org.apache.juli.FileHandler.limit=102400org.apache.juli.FileHandler.count=5

在不更改 web 应用程序的情况下,有没有办法为每个应用程序获取唯一的日志文件,并在日志文件大小上有某种类型的界限?

更新: 我找到的解决方案是根本不使用 Juli 记录器! java.util.logging.FileHandler.limit=102400java.util.logging.FileHandler.count=5

谢谢,

格雷格

【问题讨论】:

【参考方案1】:

编辑:刚刚意识到您想要每个 webapp 日志记录,这可能无法通过此设置实现...

假设您使用的是 Tomcat 6.0,我的建议是编译额外的组件以实现完整的公共日志记录并使用 Log4j 配置滚动日志。

此处的构建说明 http://tomcat.apache.org/tomcat-6.0-doc/building.html

然后替换Tomcat的/bin目录下的tomcat-juli.jar,将tomcat-juli-adapters.jar连同log4j.jar和log4j.properties一起放到/lib目录下。

然后使用类似的东西:

<appender name="file" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="logfile.log"/>
  <param name="Threshold" value="INFO"/>
  <param name="MaxFileSize" value="10MB"/>
  <param name="MaxBackupIndex" value="3"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%dISO8601 %p %m%n"/>
  </layout>
</appender>

【讨论】:

【参考方案2】:

更新:在阅读更多内容后,我现在明白你的意思了。 “Tomcat 的 JULI 实现并非旨在成为功能齐全的日志库,而只是连接这些库的简单桥梁。但是,JULI 确实提供了几个属性来配置其处理程序。下面列出了这些属性。”有趣的是,他们说默认的 java.util.Logging 实现过于有限,然后他们通过提供更有限的实现来解决它。

FileHandler javadocs

java.util.logging.FileHandler.limit 指定写入任何文件的近似最大数量(以字节为单位)。如果这为零,则没有限制。 (默认为无限制)。 java.util.logging.FileHandler.count 指定循环通过多少个输出文件(默认为 1)。

对于每个 Web 应用程序的一个文件,您可能希望用记录器的名称来分隔它,这取决于为每个应用程序创建记录器的方式。如果它们基于包或类名,那么您可以根据它过滤日志。看起来您提供的链接上的示例告诉了如何执行此操作

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \
   2localhost.org.apache.juli.FileHandler

【讨论】:

以上是关于如何配置 Tomcat JULI 日志记录以滚动日志文件?的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat日志配置文件分析

tomcat中的logging.properties有人可以具体分析一下里面的配置吗

tomcat报错日志

为啥tomcat的日志全部输出在catalina.out如何自动拆分

tomcat 日志

Tomcat catalina.out太大解决