我们公司的网络应用程序当前生成日志消息(通过System.out),稍后将由其他程序自动分析。
作为一个Windows服务,tomcat巧妙地将日志生成到其“logs”目录,每天进行分区。
问题是在linux中,所有内容都转到stdout,它可能被重定向,不会在日常文件中分割。
我在conf / context.xml上尝试了一个选项:“< Context swallowOutput = true ...”,但输出转到catalina.out,unsplit,并用不方便的行注释。
简而言之:如何在linux中配置tomcat 6.0以像处理Windows服务一样处理System.out。
提前致谢 - Artejera
答案 0 :(得分:1)
据我所知,Tomcat在* NIX和win32上的行为方式相同: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,那么您可以破解该文件,以便将stdout传输到chronolog等日志服务中,这可以为您旋转日志文件。