根据http://tomcat.apache.org/tomcat-7.0-doc/logging.html
,我正在使用tomcat 7.0.40和log4j配置一切都按预期工作,除了创建了一些日志文件,这些日志文件实际上没有在我的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
创建的文件虽然不在我的配置中,但是:
如你所见,他们使用每日滚动文件appender,这是不需要的,因为我需要一个免维护系统,所以我更喜欢使用maxBackupIndex的scrollfileappender来防止日志无限增长。
那么我在哪里可以配置stdout,stderr和commons-daemon日志?是否有某些配置或我可以用我自己的log4j配置覆盖配置? THX
答案 0 :(得分:18)
我预见到我们的某个系统将来会有一些类似的要求/面临同样的问题。所以热衷于自己找到一些解决方案/解决方法。
首先查看commons-daemon以查看我们是否可以执行任何配置以在日志上实现maxbackupindex;但搜索没有多大帮助。
然而,我找到了两种方法来处理“tomcat日志越过限制”。
在路径中找到Tomcat中的context.xml
: -
YourTomcatInstallDir\conf\context.xml
编辑上下文代码以添加swallowOutput="true"
,如下所示: -
<Context swallowOutput="true">
(这会吞下你所有的stdout / stderr并重定向到你的底层日志系统。)
在你的log4j.properties中;添加config以将org.apache.catalina
日志重定向到您自己的日志文件。
您的记录器将如下所示: -
log4j.logger.org.apache.catalina=INFO, YourAppender
(在YourAppender
现在,您可以设置MaxBackupIndex
和MaxFileSize
来实现定义的翻转次数和日志大小限制。)
如果上述方法不起作用;您可以尝试使用第二种方法中提到的外部实用程序
有一个名为logrotate
的简单工具可用于对您无法控制的日志产生预期效果。这里有一些链接可以帮助您入门。
使用此工具非常简单,快速浏览这些链接可以满足您的需求。
答案 1 :(得分:13)
我有同样的问题,最后偶然发现了解决方案。 Tomcat 7 for Windows有一个名为Monitor Tomcat的tomcat属性应用程序。在日志选项卡上,您需要删除重定向标准输出和标准输入框中的“自动”值。只需将其留空即可创建这些文件。然后,您可以使用log4j为这些关键文件创建滚动日志文件,以便将来进行调试。
希望有所帮助。
答案 2 :(得分:1)
在Windows上,您必须转到tomcat / bin / service.bat并编辑PR_LOGPATH变量(所有这些)。 并且可能通过&#34; service remove&#34;重新安装服务。和&#34;服务安装&#34; 在Linux系统上,解决方案必须非常相似
答案 3 :(得分:1)
短版:删除服务应用内的auto
文本。这将禁用stdout和stderr文件的创建。我认为,您一直使用的“ commons-daemon”文件。
长版,请参见下文。
Tomcat for Windows有一个特殊的小服务应用程序。这个程序有几个名字。例如:Commons Daemon Service Manager
,procrun
。 EXE文件通常称为Tomcat7w.exe
/ YourServiceNameHere w.exe
/ Tomcat9w.exe
之类的东西。
Windows图标仅被标记为Monitor Tomcat
。从此开始,您将直接进入Logging
标签。
这是“日志记录”标签的屏幕截图。这个应用程式可以产生几个档案:
commons-daemon
日志文件。Pid file
。我们现在不在乎这个。Redirect Stdout
日志文件。Redirect Stderror
日志文件。因此,有3个日志文件。默认情况下,这些值都不旋转。 ProcRun不提供该功能。
所以我想到了几种解决方法:
我认为官方立场可以大致概括为“什么?您的catalina / stdout / stderr文件太大了?嗯,无论如何,您都不应在其中记录任何内容。” 换句话说:唯一受官方支持的选项似乎是1(和4)。
在我的Tomcats中,“ commons-daemon”文件通常很小,并且在启动或关闭Tomcat时只会收到几行。即使在Level: Debug
。
重定向的stdout和stderr文件可能会变得很大。
但是,您可以从文本字段中删除auto
文本。这应该完全禁用这些文件的生成。
答案 4 :(得分:0)
对于那些只想自定义创建这三个日志的位置的人: 如果您将Tomcat作为服务运行,并且想要自定义commons-daemon,stderror和stdout所在的位置,则可以使用命令行参数--LogPath启动服务,或者在服务器计算机上使用自定义路径设置环境变量PR_LOGPATH。
这里也记录了其他参数: https://tomcat.apache.org/tomcat-8.0-doc/windows-service-howto.html