天天看點

tomcat輸出日志到檔案和控制台

來源:http://blog.sina.com.cn/s/blog_a0e7e34c01016a44.html

在windows下tomcat的啟動腳本預設不像unix下的腳本那樣輸出應用日志到logs/catalina.out,隻在console中輸出,如果日志刷的太快根本沒法找到錯誤資訊。

為了把日志輸出到檔案,需要修改以下腳本。

1)修改startup.bat,把腳本的倒數第二行:call "%EXECUTABLE%" start %CMD_LINE_ARGS%

tomcat輸出日志到檔案和控制台

改為:call "%EXECUTABLE%" run %CMD_LINE_ARGS%

tomcat輸出日志到檔案和控制台

2)修改catalina.bat最後的一部分代碼:

tomcat輸出日志到檔案和控制台

紅色劃線的部分是需要增加的代碼:>> �TALINA_HOME%\logs\catalina.�te:~0,10%.out

其中的catalina.�te:~0,10%.out是為了分日期存放日志檔案。在cmd下echo �te%看看,

如:2011-04-19 星期二

tomcat輸出日志到檔案和控制台

發現從第一個字元開始,長度為10的子串正是2011-04-19。

這樣在開發過程中每次輕按兩下startup.bat啟動tomcat,腳本都會把應用日志儲存到日期對應命名的日志檔案中了。可是又帶來一個新的問題,由于>> �TALINA_HOME%\logs\catalina.�te:~0,10%.out 把輸出都重定向到了檔案中,console中就無法實時顯示日志内容了,如何做到既把日志儲存到磁盤檔案中,又能在螢幕上實時監控日志呢?

想到unix下有tail -f ,于是試着度娘了一下“dos tail”,還真找到了一個在dos下的tail指令,隻是要先安裝一個windows元件Windows Server 2003 Resource Kit Tools。

如安裝目錄為“D:\Program Files\Windows Resource Kits\Tools”,把這個路徑加入到PATH環境變量。

在cmd下tail /? ,出現以下資訊則說明安裝成功了:

usage: TAIL [switches] [filename]*

   switches: [-?] display this message

             [-n] display last n lines of each file (default 10)

             [-f filename] keep checking filename for new lines

tomcat輸出日志到檔案和控制台

在tomcat主目錄的bin下建立一個bat腳本taillog.bat,内容為:

if not exist "�TALINA_HOME%\logs\catalina.�te:~0,10%.out" echo "" > �TALINA_HOME%\logs\catalina.�te:~0,10%.out

tail -f �TALINA_HOME%\logs\catalina.�te:~0,4%-�te:~5,2%-�te:~8,2%.out

最後在catalina.bat中調用這個腳本:

tomcat輸出日志到檔案和控制台

這樣就會彈出一個新的窗體,将"�TALINA_HOME%\logs\catalina.�te:~0,10%.out"中的日志顯示出來,如下圖:

tomcat輸出日志到檔案和控制台