Tomcat记录catalina.out不断增加

时间:2012-04-04 07:22:39

标签: logging tomcat7 slf4j

正如我在标题中提到的,我的slf4j tomcat日志记录配置存在问题。事情是,虽然我可以将catalina.out旋转到不同的文件,如每日appender,catalina.out文件本身继续增长,我无法弄清楚为什么。

顺便说一句,我已经使用我的应用程序的日志文件来使用slf4j logger.info调试和任何其他功能,但是我仍然需要catalina.out来从控制台动态查看正在发生的事情。这就是我需要同时继续使用catalina.out和myApplication.log的原因。

这是我在tomcat_home / conf

下的tomcat日志记录属性
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

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.

4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
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

1 个答案:

答案 0 :(得分:2)

Tomcat的政策如下:

  

它不应该是一个问题,因为没有什么应该打印到   标准输出,因为您正在使用日志包

至于我,我不同意他们因为大多数时候开发人员“DO”将内容记录到控制台作为开发时间调试目的的日志框架appender /处理程序之一(例如,只是为了在IDE控制台上查看日志输出) )。

这是我使用的解决方案......

将您的日志框架设置为 NOT 将任何内容写入dev / staging / prod环境中的标准输出。 这将使catalina.out非常小,仅使用直接标准输出写入的基本信息(选择log4j,logback等写入)。 因为如果你有一些直接的标准输出写入,你需要用记录器替换它们。

正如我上面所说,在IDE(Eclipse,IDEA或其他任何使用的东西)中进行开发时写入标准输出是有用的,以便在开发人员的控制台中显示这些日志。

以下是如何使用logback配置调整所有内容(但完全适用于log4j,我相信其他日志框架):

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>${my.console.level}</level>
    </filter>
    <encoder>
        <pattern>%d %-5p [%c{0}] %m%n</pattern>
    </encoder>
</appender>

所以我用

<level>${my.console.level}</level>

指定控制台appender的日志记录级别。

然后在您的专用环境(dev,staging,prod)上为您的jvm启动传递 -Dmy.console.level = OFF 以禁用写入标准输出。 在IDE中使用 -Dmy.console.level = ALL

基本上这就是全部。您也可以使用此方法来控制记录器日志级别。