如何配置tomcat来翻转catalina.log文件

时间:2012-02-09 22:53:18

标签: tomcat logging tomcat6 catalina

一旦达到大小限制,我正在尝试将我的tomcat配置为翻转日志文件。我正在运行tomcat作为Windows服务,并将我的所有stdout重定向到catalina.log。这是我通过logging.properties配置来设置大小限制的方式。但它没有用。

logging.properties

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.limit = 100000 # size 100kb 
1catalina.org.apache.juli.FileHandler.count = 5


2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001
3manager.org.apache.juli.FileHandler.prefix = manager.

4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter


############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

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

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler

# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
#org.apache.catalina.startup.ContextConfig.level = FINE
#org.apache.catalina.startup.HostConfig.level = FINE
#org.apache.catalina.session.ManagerBase.level = FINE
#org.apache.catalina.core.AprLifecycleListener.level=FINE

但是1catalina.org.apache.juli.FileHandler.limit = 100000似乎无法正常工作

2 个答案:

答案 0 :(得分:9)

org.apache.juli.FileHandler不支持基于文件大小的轮播,并且没有您尝试设置的limitcount属性(see docs)。相反,您可以使用支持基于大小的旋转的标准Java java.util.logging.FileHandler。您应该在配置中更改以下行:

handlers = 1catalina.java.util.logging.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.java.util.logging.FileHandler, java.util.logging.ConsoleHandler

另请注意,Java FileHandler的配置与Tomcat FileHandler

略有不同
1catalina.java.util.logging.FileHandler.level = FINEST
1catalina.java.util.logging.FileHandler.pattern = <your log dir>/catalina%g.log
1catalina.java.util.logging.FileHandler.limit = 100000
1catalina.java.util.logging.FileHandler.count = 5
1catalina.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

但是,我不确定将标准重定向到记录器写入的文件会很好,并帮助您实现您想要的。

答案 1 :(得分:1)

根据Official Tomcat 7 documentation

  

公共类FileHandler扩展java.util.logging.Handler

     

将日志消息附加到名为的文件的Handler的实现   {prefix} {date} {suffix}在已配置的目录中。

     

可以使用以下配置属性:

     
      
  • directory - 创建日志文件的目录。如果路径不是绝对路径,则它相对于当前工作目录   申请。通常是Apache Tomcat配置文件   指定此属性的绝对路径,$ {catalina.base} / logs   默认值:日志

  •   
  • rotate - 如果为true,则日志文件将在午夜过后的第一次写入时旋转,文件名将为{prefix} {date} {suffix},   其中日期是yyyy-MM-dd。如果为false,则不会旋转文件   文件名为{prefix} {suffix}。默认值:true

  •   
  • prefix - 日志文件名的前导部分。默认值:juli。

  •   
  • 后缀 - 日志文件名的尾部。默认值:.log

  •   
  • bufferSize - 配置缓冲。值0使用系统默认缓冲(通常使用8K缓冲区)。值<&lt; 0   强制写入每个日志写入时刷新。值> 0使用a   BufferedOutputStream具有已定义的值但请注意系统   默认缓冲也将被应用。默认值:-1

  •   
  • encoding - 日志文件使用的字符集。默认值:空字符串,表示使用系统默认字符集。

  •   
  • level - 此Handler的级别阈值。有关可能的级别,请参阅java.util.logging.Level类。默认值:   ALL

  •   
  • filter - 此Handler的java.util.logging.Filter实现类名。默认值:未设置

  •   
  • formatter - 此Handler的java.util.logging.Formatter实现类名。默认值:   java.util.logging.SimpleFormatter

  •