2012-05-21 88 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

在此最新評論後更新回答。 –