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 のサービスを停止し、各プロジェクトのログに前日の日付を付けて退避、
その後再度サービスを起動するといった感じです。
まとめ
ログもほっておくと開けない程にサイズが大きくなってしまうことがありますよね。
まあ、あまり参照することのないログですが、
何かあった場合に開けないと困りますし。
単純なバッチなので、
他のソフトウェアなんかにも流用できるんじゃないかと思います。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません