如何配置 tomcat 以滚动 catalina.log 文件

发布于 2025-01-04 00:01:47 字数 2916 浏览 7 评论 0原文

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

I'm trying to configure my tomcat to rollover log files once a size limit is reached. I'm running tomcat as a windows service and am redirecting all my stdout to catalina.log. This is how I configured by logging.properties to set a size limit. But it is not working.

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

But 1catalina.org.apache.juli.FileHandler.limit = 100000 doesn't seem to be working

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

战皆罪 2025-01-11 00:01:47

org.apache.juli.FileHandler 不支持基于文件大小的旋转,并且没有您尝试设置的 limitcount 属性(参见文档)。相反,您可以使用标准 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

但是,我不确定将标准输出重定向到文件由记录器编写的内容将会很好地工作并帮助您实现您想要的。

org.apache.juli.FileHandler does not support rotation based on file size and does not have the limit and count properties you are trying to set (see docs). Instead, you can use the standard Java java.util.logging.FileHandler which supports size-based rotation. You should change the following lines in your configuration:

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

Also note that Java FileHandler is configured slightly differently than 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

However, I'm not sure that redirecting standard out to the file written by the logger will work well and help you achieve what you want.

云雾 2025-01-11 00:01:47

根据 Tomcat 7 官方文档


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

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

以下配置属性可用:

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

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

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

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

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

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

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

  • filter - 此处理程序的 java.util.logging.Filter 实现类名称。默认值:未设置

  • formatter - 此处理程序的 java.util.logging.Formatter 实现类名称。默认值:
    java.util.logging.SimpleFormatter

According to the Official Tomcat 7 documentation :


public class FileHandler extends java.util.logging.Handler

Implementation of Handler that appends log messages to a file named
{prefix}{date}{suffix} in a configured directory.

The following configuration properties are available:

  • directory - The directory where to create the log file. If the path is not absolute, it is relative to the current working directory
    of the application. The Apache Tomcat configuration files usually
    specify an absolute path for this property, ${catalina.base}/logs
    Default value: logs

  • rotatable - If true, the log file will be rotated on the first write past midnight and the filename will be {prefix}{date}{suffix},
    where date is yyyy-MM-dd. If false, the file will not be rotated and
    the filename will be {prefix}{suffix}. Default value: true

  • prefix - The leading part of the log file name. Default value: juli.

  • suffix - The trailing part of the log file name. Default value: .log

  • bufferSize - Configures buffering. The value of 0 uses system default buffering (typically an 8K buffer will be used). A value of <0
    forces a writer flush upon each log write. A value >0 uses a
    BufferedOutputStream with the defined value but note that the system
    default buffering will also be applied. Default value: -1

  • encoding - Character set used by the log file. Default value: empty string, which means to use the system default character set.

  • level - The level threshold for this Handler. See the java.util.logging.Level class for the possible levels. Default value:
    ALL

  • filter - The java.util.logging.Filter implementation class name for this Handler. Default value: unset

  • formatter - The java.util.logging.Formatter implementation class name for this Handler. Default value:
    java.util.logging.SimpleFormatter

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文