5

我正在尝试将我的 tomcat 配置为在达到大小限制后翻转日志文件。我正在将 tomcat 作为 Windows 服务运行,并将我的所有标准输出重定向到 catalina.log。这就是我通过 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 似乎不起作用

4

2 回答 2

9

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

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

另请注意,JavaFileHandler的配置与 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

但是,我不确定将标准重定向到记录器编写的文件是否会正常工作并帮助您实现所需的目标。

于 2013-10-14T06:59:58.513 回答
1

根据官方 Tomcat 7 文档


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

将日志消息附加到配置目录中名为 {prefix}{date}{suffix} 的文件的处理程序的实现。

以下配置属性可用:

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

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

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

  • suffix - 日志文件名的尾随部分。默认值:.log

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

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

  • level - 此处理程序的级别阈值。有关可能的级别,请参见 java.util.logging.Level 类。默认值:全部

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

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

于 2016-01-27T13:36:14.470 回答