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

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

您可以在此页面上看到FileHandler属性 – Apache Tomcat 5.5文档
没有限制或计数属性(以下行无效)
org.apache.juli.FileHandler.limit=102400
org.apache.juli.FileHandler.count=5

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

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

谢谢,

格雷格

更新:我在阅读更多内容后立即看到了您的观点。 “Tomcat的JULI实现并不是一个function齐全的日志库,只是这些库的简单桥接。但是,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 

编辑:刚刚意识到你想要每个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目录中。

然后使用类似的东西: