Windows版Apacheでログローテートしてみました

1.環境
OS:Windows2019
WEB:Apache2.4

2.設定手順
2-1.httpd.confの設定変更

C:\Programs\Apache24\conf
httpd.confをバックアップし、httpd.conf_bk20211028にリネーム
httpd.confを下記のように書き換える

CustomLog "logs/access.log" common
↓
#CustomLog "logs/access.log" common
CustomLog "| bin/rotatelogs.exe logs/http_access_%Y%m%d.log 86400" common

ErrorLog "logs/error.log"
↓
#ErrorLog "logs/error.log"
ErrorLog "| bin/rotatelogs.exe logs/http_error_%Y%m%d.log 86400"

2-2.httpd-ssl.confの設定変更

C:\Programs\Apache24\conf\extra
httpd-ssl.confをバックアップし、httpd-ssl.conf_bk20211028にリネーム

httpd-ssl.confを下記のように書き換える

CustomLog "${SRVROOT}/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
↓
#CustomLog "${SRVROOT}/logs/ssl_request.log" \
#          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
CustomLog "| bin/rotatelogs.exe ${SRVROOT}/logs/ssl_request_%Y%m%d.log 86400" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
↓
#ErrorLog "${SRVROOT}/logs/error.log"
#TransferLog "${SRVROOT}/logs/access.log"
ErrorLog "| bin/rotatelogs.exe ${SRVROOT}/logs/ssl_error_%Y%m%d.log 86400"
TransferLog "| bin/rotatelogs.exe ${SRVROOT}/logs/ssl_access_%Y%m%d.log 86400"

2-3.コンフィグチェック
コマンドプロンプトにて

cd c:\Programs\Apache24\bin

httpd.exe -t

Syntax OK なら問題無し。

2-4.Apacheの再起動
Apacheサービスを再起動する。

2-5.ログの確認
ログファイル名にyyyymmddが付いていることを確認する。

3.ログ削除バッチの作成およびタスク登録

3-1.インストールログの退避

C:\Programs\Apache24\logsにinstalllogディレクトリを作成する
install.logをinstalllogディレクトリに移動する

3-2.ログ削除バッチファイルの作成

365日以前のlogファイルを削除する。

C:\bin\delete_LOG.bat

@echo off
forfiles /P "C:\Programs\Apache24\logs" /M *.log /D -365 /C "cmd /c del @file"

3-3.タスクスケジューラへの登録
タスク実行時のユーザアカウント:Administrator
最上位の特権で実行する。
ユーザがログオンしているかどうかに関わらず実行する。
を指定してタスク登録する。

4.まとめ
Windows版Apacheにはrotatelogs.exeが添付されていてローテートできるようになっていることがわかりました。

Comments are closed.