この記事は最終更新日から1年以上が経過しています。情報が古くなっている可能性があります。
いろいろあって Windows 版の Apache を使っているんですが、実は古いログを消してくれません。
Windows の場合、デフォルト状態だと (Apacheのあるフォルダ)/logs/error.log に書き込まれるようになっていますが、ずっと起動していても、再起動してもずっとログが追記されていってしまうので、こまめに消しておかないと数GBに膨れ上がることがあったり…
Linux だとログ管理ツール (logrotate) が良きに計らって1日ごとにファイルを分けたり古いログから消してくれるんですが、残念ながら Windows には logrotate のような機能はないようで、バッチファイルを定期的にタスクスケジューラで実行させる等のひと工夫が必要になります。
直接の原因はよくわからないけど定期的にログを消しておく事に越したことはなさそう
それならいっそ、ログを完全に出力しないようにしてみましょう。
方法
htpd.conf 中の
ErrorLog "logs/error.log"
の部分を
ErrorLog nul
に変えるだけです。
あと、mod_log_config が有効になっている場合は # をつけてコメントアウトしておきましょう。
error.log はファイル自体は作成されますが、中身は空っぽで書き込まれていないはずです。
解説
私もよくわかっていないのですが、Windows にも Linux でいう /dev/null みたいなデバイス、nul (nullではない) があります。
nul デバイスは指定した出力を捨ててくれる(ブラックホール的な)もので、ファイル名の代わりに指定して出力を捨てたりできるらしいです。
ErrorLog に nul を指定することで、エラーログが全て nul デバイスに流れてエラーログに一切書き込まれないようになっていると思われます(実際のところはよくわからんけど動いてるからヨシ!)
コメント
別にLinuxでもApacheがログを削除しているわけではないですね。
良きに計らってくれているのはlogrotateです。
そうなんですね…!普段意識したことがなかったので初耳でした…
ご指摘ありがとうございます!修正しておきます。