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