Tomcat - stdout 文件非常大
Tomcat - stdout file is very huge
我想限制 Tomcat 日志文件夹中的标准输出文件大小。
我的问题是:
- 我需要配置额外的日志记录配置,除了
-Djava.util.logging.FileHandler.limit=25000000
?
- 是否需要重新启动 apache 服务才能使更改生效?
我想在 Java 选项卡下添加,在 Java 选项部分添加以下内容:
-Djava.util.logging.FileHandler.limit=25000000
已经在 Java 选项部分定义了以下参数:
-Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 8.0
-Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 8.0
-Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 8.0\endorsed
-Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 8.0\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\logging.properties
记录属性:
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
############################################################
# 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.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler
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.AsyncFileHandler
# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE
# To see debug messages in TldLocationsCache, uncomment the following line:
#org.apache.jasper.compiler.TldLocationsCache.level = FINE
Tomcat 使用 java.util.logging.ConsoleHandler
(不是 java.util.logging.FileHandler
)记录到错误文件描述符,它将所有内容发送到 System.err
。因此无法限制日志的大小。
但是你可以在prunsrv(通常重命名为tomcat8.exe):
通过将 --StdOutput
和 --StdError
设置为空字符串,禁用 stdout/stderr
到任何文件的重定向。与 Tomcat 一起分发的默认 logging.properties
文件也将所有内容记录到每天轮换的 catalina.<date>.log
,因此 Tomcat 的日志不会丢失。
将 --StdOutput
和 --StdError
选项设置为 auto
,这应该每天轮换它们,虽然我没有测试 doesn't seem to be implemented yet [1].
您也可以在图形界面中更改此设置 prunmgr(通常重命名为 tomcat8w.exe)。
备注:如果您禁用 stdout/stderr
到文件的重定向,您还应该通过修改 logging.properties
来禁用 ConsoleHandler
:
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
至:
.handlers = 1catalina.org.apache.juli.AsyncFileHandler
还要检查您的 Web 应用程序是否不使用除 java.util.logging
之外的其他日志记录框架并修改日志记录配置(log4j.properties
for Log4j 1.x 等),以便什么都没有记录到标准 output/error.
[1] 这个问题由来已久bug report。
我想限制 Tomcat 日志文件夹中的标准输出文件大小。
我的问题是:
- 我需要配置额外的日志记录配置,除了
-Djava.util.logging.FileHandler.limit=25000000
? - 是否需要重新启动 apache 服务才能使更改生效?
我想在 Java 选项卡下添加,在 Java 选项部分添加以下内容:
-Djava.util.logging.FileHandler.limit=25000000
已经在 Java 选项部分定义了以下参数:
-Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 8.0
-Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 8.0
-Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 8.0\endorsed
-Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 8.0\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\logging.properties
记录属性:
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
############################################################
# 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.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler
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.AsyncFileHandler
# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE
# To see debug messages in TldLocationsCache, uncomment the following line:
#org.apache.jasper.compiler.TldLocationsCache.level = FINE
Tomcat 使用 java.util.logging.ConsoleHandler
(不是 java.util.logging.FileHandler
)记录到错误文件描述符,它将所有内容发送到 System.err
。因此无法限制日志的大小。
但是你可以在prunsrv(通常重命名为tomcat8.exe):
通过将
--StdOutput
和--StdError
设置为空字符串,禁用stdout/stderr
到任何文件的重定向。与 Tomcat 一起分发的默认logging.properties
文件也将所有内容记录到每天轮换的catalina.<date>.log
,因此 Tomcat 的日志不会丢失。将
--StdOutput
和--StdError
选项设置为auto
,这应该每天轮换它们,虽然我没有测试 doesn't seem to be implemented yet [1].
您也可以在图形界面中更改此设置 prunmgr(通常重命名为 tomcat8w.exe)。
备注:如果您禁用 stdout/stderr
到文件的重定向,您还应该通过修改 logging.properties
来禁用 ConsoleHandler
:
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
至:
.handlers = 1catalina.org.apache.juli.AsyncFileHandler
还要检查您的 Web 应用程序是否不使用除 java.util.logging
之外的其他日志记录框架并修改日志记录配置(log4j.properties
for Log4j 1.x 等),以便什么都没有记录到标准 output/error.
[1] 这个问题由来已久bug report。