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

17
我有几个使用java.util.logging的Web应用程序。Tomcat 5.5配置为使用Juli记录器,以便每个Web应用程序都有自己的日志文件。问题是Juli没有最大文件大小和文件计数的属性。使用Juli,文件将无限增长,并且仅在一天结束时才滚动。此外,保留了无限数量的日志文件。
您可以在此页面上查看FileHandler属性 - Apache Tomcat 5.5 Documentation,但没有限制或计数属性(以下行不起作用)。 org.apache.juli.FileHandler.limit=102400 org.apache.juli.FileHandler.count=5 在不更改Web应用程序的情况下,是否有一种方法可以获得每个应用程序的唯一日志文件,并对日志文件大小进行某种边界设置?
更新:我找到的解决方案根本不使用Juli记录器! java.util.logging.FileHandler.limit=102400 java.util.logging.FileHandler.count=5 谢谢,
Greg
2个回答

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

3

编辑:刚刚意识到您想要每个Web应用程序的日志记录,这可能无法使用此设置...

我的建议是,假设您正在使用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放置在/lib目录中,以及log4j.jar和log4j.properties。

然后使用类似以下内容的东西:

<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接