在哪里配置内部tomcat7 stdout/stderr日志文件 [英] Where to configure internal tomcat7 stdout/stderr log files

查看:176
本文介绍了在哪里配置内部tomcat7 stdout/stderr日志文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我根据 http使用Log4j配置的Apache Tomcat 7.0.40 ://tomcat.apache.org/tomcat-7.0-doc/logging.html

一切正常,除了创建了一些日志文件之外,这些日志文件实际上未在我的log4j.properties中配置:

Everything's working as expected, except that some log files are created, which are actually not configured in my log4j.properties:

log4j.rootLogger=INFO, CATALINA

# Define all the appenders
log4j.appender.CATALINA=org.apache.log4j.RollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.log
log4j.appender.CATALINA.MaxFileSize=3MB
log4j.appender.CATALINA.MaxBackupIndex=10
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.LOCALHOST=org.apache.log4j.RollingFileAppender
log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.log
log4j.appender.LOCALHOST.MaxFileSize=3MB
log4j.appender.LOCALHOST.MaxBackupIndex=10
log4j.appender.LOCALHOST.Append=true
log4j.appender.LOCALHOST.Encoding=UTF-8
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.MANAGER=org.apache.log4j.RollingFileAppender
log4j.appender.MANAGER.File=${catalina.base}/logs/manager.log
log4j.appender.MANAGER.MaxFileSize=3MB
log4j.appender.MANAGER.MaxBackupIndex=10
log4j.appender.MANAGER.Append=true
log4j.appender.MANAGER.Encoding=UTF-8
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.HOST-MANAGER=org.apache.log4j.RollingFileAppender
log4j.appender.HOST-MANAGER.File=${catalina.base}/logs/host-manager.log
log4j.appender.HOST-MANAGER.MaxFileSize=3MB
log4j.appender.HOST-MANAGER.MaxBackupIndex=10
log4j.appender.HOST-MANAGER.Append=true
log4j.appender.HOST-MANAGER.Encoding=UTF-8
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\
  INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=\
  INFO, HOST-MANAGER

尽管不在我的配置中,但创建的文件是:

The files which get created although they are NOT in my configuration are:

  • 公共守护程序. yyyy-MM-dd .log
  • tomcat7-stderr. yyyy-MM-dd .log
  • tomcat7-stdout. yyyy-MM-dd .log
  • commons-daemon.yyyy-MM-dd.log
  • tomcat7-stderr.yyyy-MM-dd.log
  • tomcat7-stdout.yyyy-MM-dd.log

如您所见,他们使用了DailyRollingFileAppender,这是不需要的,因为我需要免维护系统.因此,我希望使用RollingFileAppendermaxBackupIndex来防止日志无限增长.

As you see they use a DailyRollingFileAppender, which is not desired, as I need a maintenance free system. So I would prefer a RollingFileAppender with maxBackupIndex to prevent unlimited growth of the logs.

那么在哪里可以配置stdoutstderrcommons-daemon日志?某处是否有一些配置,或者我可以使用自己的Log4j配置覆盖该配置?谢谢

So where can I configure the stdout, stderr and commons-daemon logs? Is there some configuration somewhere or can I override the config with my own Log4j config? Thx

推荐答案

我预见我们日后在某个系统上会有类似的要求/面临相同的问题.因此,我热衷于自己寻找一些解决方案/解决方法.

I foresee us having a similar requirement/facing same issue some time later in future on one of our systems. So was keen on finding some solution/workaround myself.

首先查看commons守护程序,以查看是否可以进行任何配置以在日志上实现maxbackupindex;但是搜索没有太大帮助.

Looked into the commons-daemon first to see if there is any configuration we can do to achieve a maxbackupindex on the logs; but the search didn't help much.

但是我发现人们可以使用两种方法来处理"tomcat日志越界".

However i found two approaches that people take for dealing with "tomcat logs crossing limits".

  1. 在Tomcat中的路径:-

  1. Find context.xml in Tomcat in the path :-

YourTomcatInstallDir\conf\context.xml  

  • 编辑上下文标记以添加swallowOutput="true",如下所示:-

  • Edit the context tag to add swallowOutput="true" like below:-

    <Context swallowOutput="true">
    

    (这将吞噬所有的stdout/stderr并重定向到基础日志系统.)

    (This swallows all your stdout/stderr and redirects to your underlying logging system.)

    在您的log4j.properties中;添加配置以将您的org.apache.catalina日志重定向到您自己的日志文件.

    In your log4j.properties; add config to redirect your org.apache.catalina logs to your own log file.

    您的记录器将如下所示:-

    Your logger will look like this:-

    log4j.logger.org.apache.catalina=INFO, YourAppender
    

    (在YourAppender上,您现在可以设置MaxBackupIndexMaxFileSize来实现定义的翻转次数和日志大小限制.)

    (On YourAppender now you can set MaxBackupIndex and MaxFileSize to achieve your defined number of rollovers and a limit on the log size. )

    如果上述方法不起作用;您可以尝试使用第二种方法

    If the above approach doesn't work; you can try using an external utility as mentioned in the second approach

    有一个名为logrotate的简单工具可用于在您无法控制的日志上实现所需的效果.这里有一些链接可以帮助您入门.

    There's a simple tool called logrotate available to achieve the desired effect on logs you do not have control over. Here are some links to get you started.

    • How to rotate Tomcat catalina.out
    • Understanding logrotate utility
    • logrotate usage
    • logrotate on windows

    此工具的用法非常简单,通过快速浏览这些链接应该可以满足您的需求.

    The usage of this tool is pretty straightforward and a quick run through these links should get you what you need.

    这篇关于在哪里配置内部tomcat7 stdout/stderr日志文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆