Linux下cronolog安裝配置

 1、本文基於的環境:html

操做系統:Linux(redhat)、Windows(XP、2003)java

JDK版本:j2sdk1.4.2_04linux

Tomcat版本:tomcat-5.0.28apache

Cronolog版本:cronolog-1.6.2.tar.gzwindows

                     cronolog-1.6.1-win32.ziptomcat

本文修改後的tomcat都是按日保存日誌文件,文件格式如:catalina.2009-06-07.out服務器

2、cronolog的簡介(下載cronologapp

Cronolog是一款日誌輪循(rotation)工具,能夠用它來把Apache、Tomcat等Web服務器上輸出的日誌切分紅按日或月保存的文件。工具

Cronolog從標準輸入中讀取日誌內容,而後把它們寫到按指定格式命名的日誌文件中。日 志文件的名稱能夠加入一段日期標記(如 Catalina.2009-06-07.out),當日期改變後Cronolog會把以前的日誌文件關閉,再打開一個包含新日期的日誌文件(如 Catalina.2009-06-08.out)。測試

利用Cronolog能夠完美解決tomcat中的catalina.out日誌文件不斷增大,且不能在tomcat運行期間刪除的問題。

須要注意的一個問題是,日期改變後cronolog並非立刻切換日誌文件,而是須要有新的 日誌輸出才能觸發cronolog切換日誌文件。因此若是你想 在2009-06-08刪除2009-06-07的日誌文件,若是從2009-06-08的00:00開始到你執行刪除時都沒有日誌輸出,則 2009-06-07的日誌文件可能仍然被佔用着,致使刪除失敗。

 

 

 

3、Linux下使用Cronolog輪循(rotating)Tomcat日誌

(1)首先安裝cronolog(cronolog-1.6.2.tar.gz放於/opt下)

cd /opt

gzip –d cronolog-1.6.2.tar.gz

tar –xvf cronolog-1.6.2.tar

cd cronolog-1.6.2

./configure --prefix=/usr/local/cronolog //按本身須要指定安裝路徑,或不指定

make

make install

 

 

    (2)修改Tomcat配置文件

先中止tomcat服務,而後修改如下文件:

%CATALINA_HOME%/bin/catalina.sh

org.apache.catalina.startup.Bootstrap "$@" start \

>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

 

替換爲:

org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \

| /usr/local/cronolog/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &

 

 

 

另外刪除行:

touch "$CATALINA_BASE"/logs/catalina.out

 

修改完畢後從新啓動tomcat服務。

 

 

 

4、Windows下使用Cronolog輪循(rotating)Tomcat日誌

(1)安裝cronolog

解壓cronolog-1.6.1-win32.zip,將cronolog.exe文件拷貝到Tomcat的bin目錄下。

 

 

 

(2)修改Tomcat配置

在Windows下,tomcat默認是把日誌內容直接輸出到控制檯的,而不是保存在catalina.out文件,因此要先修改成把日誌內容輸出到文件。

首先修改%CATALINA_HOME%/bin/startup.bat,將

call "%EXECUTABLE%" start %CMD_LINE_ARGS%

替換爲:

call "%EXECUTABLE%" run %CMD_LINE_ARGS%

 

 

 

而後修改%CATALINA_HOME%/bin/catalina.bat,將

rem Execute Java with the applicable properties

if not "%JPDA%" == "" goto doJpda

if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

goto end

:doSecurity

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

goto end

:doJpda

if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

goto end

:doSecurityJpda

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

goto end

 

 

替換爲:

 

 

rem Execute Java with the applicable properties

if not "%JPDA%" == "" goto doJpda

if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% |%CATALINA_BASE%\bin\cronolog %CATALINA_BASE%\logs\catalina.%date:~0,10%.out >> null (應該是catalina.%%Y-%%m-%%d.out)

goto end

:doSecurity

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% |%CATALINA_BASE%\bin\cronolog %CATALINA_BASE%\logs\catalina.%date:~0,10%.out >> null (應該是catalina.%%Y-%%m-%%d.out)

goto end

:doJpda

if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% |%CATALINA_BASE%\bin\cronolog %CATALINA_BASE%\logs\catalina.%date:~0,10%.out >> null (應該是catalina.%%Y-%%m-%%d.out)

goto end

:doSecurityJpda

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% |%CATALINA_BASE%\bin\cronolog %CATALINA_BASE%\logs\catalina.%date:~0,10%.out >> null (應該是catalina.%%Y-%%m-%%d.out)

goto end

 

    修改完以後從新啓動tomcat。

 

 

用於Windows環境的補充(2009-06-13):

        寫這篇文章的時候,在Windows下的配置尚未測試過,其實上面的寫法是錯誤的!以前在windows下日誌文件名使用「catalina.%Y- %m-%d.out」的方式生成的日誌文件變成「catalina.md.out」的樣子,並非日期!然而使用上面的 「catalina.%date:~0,10%.out"得出的文件名是「catalina.2009-06-13.out",其中的日期是tomcat 啓動時的日期,可是日誌文件並不會隨着日期改變而輪循(rotating)!

        其實無論是在linux仍是windows下,cronolog接受的日期格式都是「%Y%m%d%H%M「這樣的格式。%Y表年,%m表月,%d表 日,%H表小時,%M表分鐘。只有使用這樣的格式指定日誌輸出文件的名稱,cronolog纔會按日期、時間的變化生成新的日誌文件。

        然而,在Windows下須要分兩種狀況(剛在cronolog-1.6.1.win32所帶的INSTALL說明中看到):

Configuration for use with NT service:

TransferLog "|c:/apache/bin/convlog.exe c:/apache/logs/access%Y%m%d.log"

       

Configuration for use from command line:

TransferLog "|c:/apache/bin/convlog.exe c:/apache/logs/access%%Y%%m%%d.log"

 

        也就是說,若是是經過命令行方式來啓動tomcat的話,日誌文件名的寫法必須是「catalina.%%Y-%%m-%%d.out」纔是正確的。

相關文章
相關標籤/搜索