Windows版のApacheでログを完全に出力しないようにする

いろいろあって Windows 版の Apache を使っているんですが、実は古いログを消してくれません。

Windows の場合、デフォルト状態だと (Apacheのあるフォルダ)/logs/error.log に書き込まれるようになっていますが、ずっと起動していても、再起動してもずっとログが追記されていってしまうので、こまめに消しておかないと数GBに膨れ上がることがあったり…
Linux だと良きに計らって古いログから消してくれるんだけど…

(大量に書き込まれたエラーログのせいで php の exec() が Apache 経由で正常に実行できない不具合に遭遇したことがある・直接の原因はよくわかりませんがログは消すに越したことはなさそう)

それならいっそ完全に出力しないようにしたい、ということで、その方法をメモ…

結論

htpd.conf 中の

ErrorLog "logs/error.log"

の部分を

ErrorLog nul

に変えるだけです。
あと、mod_log_config が有効になっている場合は # をつけてコメントアウトしておきましょう。

error.log はファイル自体は作成されますが、中身は空っぽで書き込まれていないはずです。

解説

私もよくわかっていないのですが、Windows にも Linux でいう /dev/null みたいなデバイス、nul (nullではない) があります。
nul デバイスは指定した出力を捨ててくれる(ブラックホール的な)もので、ファイル名の代わりに指定して出力を捨てたりできるらしいです。

ErrorLog に nul を指定することで、エラーログが全て nul デバイスに流れてエラーログに一切書き込まれないようになっていると思われます(実際のところはよくわからんけど動いてるからヨシ!)

コメント