web-dev-qa-db-ja.com

Apacheはいつaccess.logにログを記録しますか-リクエストを処理する前または後ですか?

この投稿を読む「 nderstanding Apache Access Log "参照する http://httpd.Apache.org/docs/1.3/logs.html

%tは、サーバーが要求の処理を終了した時間です。

これにより、リクエストがサーバーによって処理されるまでaccess.logの行が書き込まれないことを理解しています。そのため、リクエストに1分かかる場合、タイムスタンプはサーバーがリクエストを受信して​​から1分後になります。

ただし、上記のドキュメントはApache 1.3用です。これを読む http://httpd.Apache.org/docs/2.2/mod/mod_log_config.html それは言う

%tリクエストが受信された時間(標準の英語形式)

これで、上記の例に基づいて、タイムスタンプはリクエストがサーバーによって最初に受信された時間を参照していることがわかります。ただし、その場合、Apacheはリクエストが処理されたときにaccess.logをさらに更新する必要があります。または、リクエストが完了するまでaccess.logを更新するのを待つかもしれませんが、イベントが時間でソートされないことを期待しているので疑います-しかし、それらはそうです(私の理解によれば最初の説明をより合理的にします。

それで、どちらが正しいか、処理を完了したか、受信したか、またはバージョンに応じて両方ですか? (または、私が完全に理解していないことは...)

3
rhellem

Apacheは、リクエストの完了後にログファイルに書き込みます。要求が開始された時刻を記憶し、要求が終了した後にこの時刻をログファイルに書き込むことができます。

これは、Apacheログファイルが厳密に順序付けられないことを意味します。リクエストに時間がかかるため、遅く記録される以前のレコードがある場合があります。

Apacheは戻ってログエントリを修正することはありません。

5