2012-05-21 58 views
0

我们公司的webapps目前生成日志消息(通过System.out),稍后将由其他程序自动分析。如何在Linux中配置Tomcat 6.x日志以表现为Tomcat windows服务

作为一个Windows服务,tomcat整洁地生成日志到其“日志”目录,每天进行分区。

问题是,在Linux中,一切都转到标准输出,它可能被重定向,不会在日常文件中拆分。

我在conf/context.xml中尝试了一个选项:“< Context swallowOutput = true ...”,但输出转到catalina.out,unsplit,并用不方便的线条评论。

简而言之:如何在Linux中配置tomcat 6.0来处理System.out,就如同windows服务一样。

在此先感谢 - Artejera

+0

你试图从你的webapp或其他地方压制stdout日志消息吗?写入stdout的类在哪里? –

+0

我试图让tomcat在linux中做什么,它已经在windows中做了什么(当作为一个服务启动时),由使用directrly System.out.println()的webapp类生成的stdout消息。 – artejera

回答

1

据我所知,在Tomcat的* NIX和Win32行为相同的方式:标准输出被重定向到一个不旋转的文件。在将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等,它们可以为你旋转日志文件。

+0

正确...我使用的是Windows服务安装程序,并且我错过了一个事实,即它生成类似stdtout_yymmddhhmmss.log的东西......它不会旋转它。我认为它确实如此,我的错误。感谢指出这一点。在linux中获得这个相同的功能是直接的。我在“屏幕”会话下使用脚本startup.sh。感谢您的澄清... – artejera

+0

在此最新评论后更新回答。 –