Trac Lightning でログローテーションを仕込む
おはようございます。
昨日に引き続き、Trac Lightning のネタです。
今回はプロジェクト毎に出力されるログを
日付毎にローテーションするバッチを作ったのでまたまたとりあえず公開します。
これまた、あまり需要はないかもしれませんが。。
スポンサーリンク
バッチファイル
次のファイルをTracのホーム配下のbatchディレクトに作成し、タスクスケジューラに登録します。
trac_logrotate.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105  |     @ECHO OFF     REM==============================================     REMログローテーション設定     REM環境に合わせて変更してください     REM==============================================     REMTRACホームのパスを設定     SETTRAC_HOME=C:\TracLight     REMTRACのサービス名     SETTRAC_SERVICE=TracLightning     REM==============================================     REMその他変数     REM==============================================     REMバッチ名     SETBATCHNAME=%~0     REMSVNホームのパスを設定     SETSVN_HOME=%TRAC_HOME%\CollabNetSVN     REMApacheのパスを設定     SETHTTPD=%SVN_HOME%\httpd\bin\     REMプロジェクトディレクトリ     SETPRJ_DIR=%TRAC_HOME%\projects\trac     REM実行ディレクトリ     SETEXECDIR=%CD%     REM-----------------------------     REM1日前の日付をYMDにセット     REM-----------------------------     SETYMD=     ECHO WScript.ECHO DateAdd("d", -1, Date()) > tmp.vbs     FOR/f"tokens=1-3 delims=/-"%%Ain('cscript //nologo tmp.vbs')DOSETYMD=%%A%%B%%C     DELtmp.vbs     REMログファイル     SETLOG_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% -kstop>>%LOG_FILE%     IFNOTERRORLEVEL0GOTO:LA_ERROR     ECHO %DATE% %TIME% [INFO] サービスが停止されました。>> %LOG_FILE%     ECHO %DATE% %TIME% [INFO] 下記ファイルをリネームします。 >> %LOG_FILE%     FOR/R%%iIN(*)DO(     REMトラックログかどうか     if'trac.log'=='%%~nxi'(     ECHO %DATE% %TIME% [INFO] %%i >> %LOG_FILE%     CALL:LA_FILEMOVE%%i     IFNOTERRORLEVEL0GOTO:LA_ERROR     )     )     REMサービスの起動     ECHO %DATE% %TIME% [INFO] サービスを開始します。>> %LOG_FILE%     CALL%HTTPD%\httpd.exe -n%TRAC_SERVICE% -kstart     IFNOTERRORLEVEL0GOTO:LA_ERROR     ECHO %DATE% %TIME% [INFO] サービスが開始されました。>> %LOG_FILE%     GOTOLA_ENDBATCH     REM==================================================================     REMファイル名変更     REM==================================================================     :LA_FILEMOVE     CD%~dp1     SETfile=%~nx1     IFNOTEXIST%file%_%YMD%(     REN%~nx1%file%_%YMD%     typenul>%~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 のサービスを停止し、各プロジェクトのログに前日の日付を付けて退避、
その後再度サービスを起動するといった感じです。
まとめ
ログもほっておくと開けない程にサイズが大きくなってしまうことがありますよね。
まあ、あまり参照することのないログですが、
何かあった場合に開けないと困りますし。
単純なバッチなので、
他のソフトウェアなんかにも流用できるんじゃないかと思います。
ではでは。








ディスカッション
コメント一覧
まだ、コメントがありません