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

时间:2008-09-25 21:33:07

标签: java tomcat logging log4j

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

您可以在此页面上看到FileHandler属性 - Apache Tomcat 5.5 Documentation
没有限制或计数属性(以下行无效)
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

谢谢,

格雷格

2 个答案:

答案 0 :(得分:3)

更新:在阅读更多内容后,我现在看到了你的观点。 “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

答案 1 :(得分:3)

编辑:刚刚意识到您希望每个webapp日志记录都可能无法使用此设置...

我的建议,假设你正在使用Tomcat 6.0,就是为完整的commons-logging编译额外的组件,并使用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="%d{ISO8601} %p %m%n"/>
  </layout>
</appender>
相关问题