Trac Lightning でログローテーションを仕込む
おはようございます。
昨日に引き続き、Trac Lightning のネタです。
今回はプロジェクト毎に出力されるログを
日付毎にローテーションするバッチを作ったのでまたまたとりあえず公開します。
これまた、あまり需要はないかもしれませんが。。
スポンサーリンク
バッチファイル
次のファイルをTracのホーム配下のbatchディレクトに作成し、タスクスケジューラに登録します。
trac_logrotate.bat
@ECHO OFF
REM ==============================================
REM ログローテーション設定
REM 環境に合わせて変更してください
REM ==============================================
REM TRACホームのパスを設定
SET TRAC_HOME=C:\TracLight
REM TRACのサービス名
SET TRAC_SERVICE=TracLightning
REM ==============================================
REM その他変数
REM ==============================================
REM バッチ名
SET BATCHNAME=%~0
REM SVNホームのパスを設定
SET SVN_HOME=%TRAC_HOME%\CollabNetSVN
REM Apacheのパスを設定
SET HTTPD=%SVN_HOME%\httpd\bin\
REM プロジェクトディレクトリ
SET PRJ_DIR=%TRAC_HOME%\projects\trac
REM 実行ディレクトリ
SET EXECDIR=%CD%
REM -----------------------------
REM 1日前の日付をYMDにセット
REM -----------------------------
SET YMD=
ECHO WScript.ECHO DateAdd("d", -1, Date()) > tmp.vbs
FOR /f "tokens=1-3 delims=/-" %%A in ('cscript //nologo tmp.vbs') DO SET YMD=%%A%%B%%C
DEL tmp.vbs
REM ログファイル
SET LOG_FILE=%EXECDIR%\log\trac_logRotation_%YMD%.log
REM ==================================================================
REM バッチ開始
REM ==================================================================
:LA_STARTBATCH
ECHO %DATE% %TIME% [INFO] ログローテーションを開始します。 >> %LOG_FILE%
CD %PRJ_DIR%
REM サービスの停止
ECHO %DATE% %TIME% [INFO] サービスを停止します。>> %LOG_FILE%
CALL %HTTPD%\httpd.exe -n %TRAC_SERVICE% -k stop >> %LOG_FILE%
IF NOT ERRORLEVEL 0 GOTO :LA_ERROR
ECHO %DATE% %TIME% [INFO] サービスが停止されました。>> %LOG_FILE%
ECHO %DATE% %TIME% [INFO] 下記ファイルをリネームします。 >> %LOG_FILE%
FOR /R %%i IN (*) DO (
REM トラックログかどうか
if 'trac.log'=='%%~nxi' (
ECHO %DATE% %TIME% [INFO] %%i >> %LOG_FILE%
CALL :LA_FILEMOVE %%i
IF NOT ERRORLEVEL 0 GOTO :LA_ERROR
)
)
REM サービスの起動
ECHO %DATE% %TIME% [INFO] サービスを開始します。>> %LOG_FILE%
CALL %HTTPD%\httpd.exe -n %TRAC_SERVICE% -k start
IF NOT ERRORLEVEL 0 GOTO :LA_ERROR
ECHO %DATE% %TIME% [INFO] サービスが開始されました。>> %LOG_FILE%
GOTO LA_ENDBATCH
REM ==================================================================
REM ファイル名変更
REM ==================================================================
:LA_FILEMOVE
CD %~dp1
SET file=%~nx1
IF NOT EXIST %file%_%YMD% (
REN %~nx1 %file%_%YMD%
type nul > %~nx1
) ELSE (
ECHO %DATE% %TIME% [INFO] 既に %YMD% のファイルが存在します。 >> %LOG_FILE%
)
EXIT /b
REM ==================================================================
REM エラー処理
REM ==================================================================
:LA_ERROR
ECHO %DATE% %TIME% [ERROR] エラーが発生したため終了します。 >> %LOG_FILE%
CD %EXECDIR%
GOTO :LA_ENDBATCH
REM ==================================================================
REM 終了処理
REM ==================================================================
:LA_ENDBATCH
ECHO %DATE% %TIME% [INFO] バッチを終了します。 >> %LOG_FILE%
CD %EXECDIR%
EXIT /0
流れとしては、
Trac Lightning のサービスを停止し、各プロジェクトのログに前日の日付を付けて退避、
その後再度サービスを起動するといった感じです。
まとめ
ログもほっておくと開けない程にサイズが大きくなってしまうことがありますよね。
まあ、あまり参照することのないログですが、
何かあった場合に開けないと困りますし。
単純なバッチなので、
他のソフトウェアなんかにも流用できるんじゃないかと思います。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません