0

我们公司的 web 应用程序目前会生成日志消息(通过 System.out),稍后其他程序会自动分析这些消息。

作为 Windows 服务,tomcat 巧妙地将日志生成到其“日志”目录,每天进行分区。

问题在于,在 linux 中,所有内容都进入标准输出,可能会被重定向,而不是在日常文件中拆分。

我在 conf/context.xml 中尝试了一个选项:“<Context speakOutput=true ...”,但输出到 catalina.out,未拆分,并带有不方便的行注释。

简而言之:如何在 linux 中配置 tomcat 6.0 来处理 System.out,就像它作为 Windows 服务一样。

提前致谢 - Artejera

4

1 回答 1

1

据我所知,*NIX 和 win32 上的 Tomcat 的行为方式相同:stdout 被重定向到未旋转的文件。在将 Tomcat 安装为服务时,您是使用 Tomcat 安装程序(安装 procrun)还是使用其他程序来设置您的服务?

在您的 Linux 环境中,您是使用 bin/catalina.sh 启动 Tomcat,还是使用 jsvc 或其他方式?每个启动策略的选项都不同。

如果您考虑使用 jsvc 启动 Tomcat,您可以将 SIGUSR1 发送到 jsvc 进程,以使其重新打开日志文件。这样,您可以让一个 cron 作业或类似的东西执行以下操作:

$ mv $CATALINA_BASE/logs/catalina.out $CATALINA_BASE/logs/catalina-`date -I`.out
$ kill -SIGUSR1 $CATALINA_PID

这应该重新打开 catalina.out 并实现您正在寻找的旋转。

如果您必须坚持使用 bin/catalina.sh,那么您可以破解该文件,以便将标准输出通过管道传输到 chronolog 等日志服务中,该服务可以为您轮换日志文件。

于 2012-05-22T15:29:52.587 回答