当Tomcat5.5stderr和stdout文件变得太大/太大时,我如何滚动它们?

当Tomcat5.5stderr和stdout文件变得太大/太大时,我如何滚动它们?,tomcat,stdout,stderr,rollover,Tomcat,Stdout,Stderr,Rollover,我一直在试图找到一种方法,在Tomcat5.5stderr和stdout日志文件变得太大时将其滚动,但我一直无法做到这一点。现在,请理解这不是用于web应用程序日志记录的。这只是Tomcat自动创建的stdout和stderr日志。同样,它们变得太大了,我只需要一种方法,当它们变得太大和/或在某个时间间隔(即每天、每小时)上滚动它们 我尝试使用log4j,但这似乎是为应用程序日志而设计的,而不是为tomcat设计的。我发现有一个方法声明它可以使用og4j重定向stdout和stderr(http

我一直在试图找到一种方法,在Tomcat5.5stderr和stdout日志文件变得太大时将其滚动,但我一直无法做到这一点。现在,请理解这不是用于web应用程序日志记录的。这只是Tomcat自动创建的stdout和stderr日志。同样,它们变得太大了,我只需要一种方法,当它们变得太大和/或在某个时间间隔(即每天、每小时)上滚动它们

我尝试使用log4j,但这似乎是为应用程序日志而设计的,而不是为tomcat设计的。我发现有一个方法声明它可以使用og4j重定向stdout和stderr(http://sysgears.com/articles/how-to-redirect-stdout-and-stderr-writing-to-a-log4j-appender#comment-749),我在这个网站上写了几个问题,详细说明了我的困境,但我一直无法让它发挥作用。如果我能让这个方法起作用,或者如果有另一种方法在log4j之外,我将不胜感激

此外,是否可以自己使用java或perl来滚动文件?作为测试,我尝试删除文件,因为它们正在写入,但是,当然,我不能。这些文件被Tomcat锁定。这一过程将是:

从Tomcat进程解锁文件 检查尺寸是否“太大” 如果是,保存并关闭文件,用新文件名编写一个新文件(即stderr01012011_1.log) 将新文件锁定到Tomcat进程

这听起来需要做很多工作,甚至可能不可行,但是如果我不能让log4j方法工作,我能做什么呢?多谢各位


我希望Apache有内置的东西来滚动stderr和stdout日志文件。

您可以使用带有“copyruncate”选项的logrotate。看看这里:

嘿,谢谢!非常感谢您的回复!但是,我很抱歉没有在前面提到这一点,我使用的是Windows,而不是linux/unix。也许在Windows平台上有一个与logrotate等价的工具?此外,该链接指定它是用于catalina.out的,但它可能可以应用于其他日志文件,如stdout和stderr?再次感谢。你找到解决问题的方法了吗?