web-dev-qa-db-ja.com

mod_log_rotateとrotatelogs.exeを一緒に使用することの欠点は何ですか?

Microsoftベースのプラットフォームでは、ErrorLogディレクティブにrotatelogs.exeを使用し、mod_log_rotateがローテーションのCustomLogディレクティブを処理できるようにすることには、欠点や隠れた落とし穴がありますか?私が理解しているように、mod_log_rotateはサーバー全体のログ処理を引き継ぎますが、mod_log_rotateとrotatelogs.exeはどのように相互作用しますか? rotatelogs.exeはmod_log_rotateからデータをパイプしますか?

以下は私がhttpd.confに持っている設定です:

# Rotate our ErrorLogs, since mod_log_rotate doesn't seem to handle this.
ErrorLog "|bin/rotatelogs.exe -l logs/error/error.%Y-%m-%d-%H_%M_%S.log 86400"
[...]
<IfModule log_rotate_module>
#
# Produce a log file with at human readable extension in a directory called 'access'.
#
CustomLog logs/access/access_log.%Y-%m-%d-%H%M%S combined
[...]

特にトピックから外れている場合は、意見を求めていません。これが技術的またはセキュリティの観点から実際の問題を引き起こすかどうかを知りたいです。

4
Anaksunaman

rotatelogsおよびmod_log_rotateは、同じ問題に対する2つの異なる解決策です(Apacheに信号を送ったり再起動したりせずにログをローテーションする)。

rotatelogs(または cronolog などの他のプログラム)は、ローテーションを処理するプログラムにApacheログをパイプすることで問題を解決します。これは優れたソリューションですが、別のプロセスを実行してパイプを開いたままにすることを意味します。

mod_log_rotateサーバープロセスでローテーションを処理することにより、問題を解決します。繰り返しになりますが、これもすばらしい解決策ですが、onlyはアクセスログをローテーションします(エラーログに対して何か他のことをする必要があります)。

両方のソリューション(1つはアクセスログを処理するため、もう1つはエラーログを処理するため)を使用することに「間違い」はありませんが、健全性と一貫性のために、ログをローテーションするときにApacheに信号を送るか、パイプするという1つのソリューションに固執します。すべてをrotatelogsに。


特にWindowsでは、ログを外部でローテーションしてApacheに信号を送ることをお勧めします。これは、 Windowsでのパイプ処理はバグがある可能性があるため (私の知る限り、状況は2006年以降あまり改善されていません)。

(実際、私が推奨する推奨事項を作成していましたかWindowsでApacheを実行しない-ApacheはUnixサーバーで実行するように設計されていますIISはWindowsサーバー上で実行するように設計されており、Apacheの人々がWindowsの「サポート」について主張しているにもかかわらず、2つが交差することはありません。)

3
voretaq7