在哪里配置内部tomcat7 stdout/stderr日志文件 [英] Where to configure internal tomcat7 stdout/stderr log files
问题描述
我根据 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
,这是不需要的,因为我需要免维护系统.因此,我希望使用RollingFileAppender
和maxBackupIndex
来防止日志无限增长.
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.
那么在哪里可以配置stdout
,stderr
和commons-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".
-
在Tomcat中的路径:-
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
上,您现在可以设置MaxBackupIndex
和MaxFileSize
来实现定义的翻转次数和日志大小限制.)
(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屋!