Erhöhen Sie die Genauigkeit des Apache 2.2-Protokollzeitstempels, um Mikrosekunden einzuschließen

Erhöhen Sie die Genauigkeit des Apache 2.2-Protokollzeitstempels, um Mikrosekunden einzuschließen

Eine ähnliche Frage wurde bereits gestellt aufPaketüberfluss aber es wurde keine hilfreiche Antwort gegeben und ich denke, es passt hierher besser.

Ich muss die Mikrosekunden oder Millisekunden der ersten Antwortzeit protokollieren. Ich habe das in der Dokumentation für Apache 2.2 angegebene Format verwendet.http://httpd.apache.org/docs/2.2/mod/mod_log_config.html(Ich verwende Apache 2.2.3), aber es funktioniert nicht. Ich habe das Protokollformat in /etc/httpd/conf/httpd.conf geändert in:

LogFormat "%h %l %u %t %{usec_frac}t \"%r\" %>s %b %D" test

Die Ausgabe, die ich erhalte, ist:

IPaddress - - [10/Oct/2015:19:47:46 +0200] usec_frac "GET /w/images/thumb/f/fa/Wikiquote-logo.svg/35px-Wikiquote-logo.svg.png HTTP/1.1" 200 1931 86

Das Problem ist also usec_fracnicht gelöst, wird aber in der Dokumentation als mögliches Format aufgeführt %{format}t. Ich verwende CentOS Release 5.8 (Final) und habe die httpd.conf mit vi bearbeitet. Was könnte hier das Problem sein?

Antwort1

Wie in der offiziellen Dokumentation, die Sie verlinkt haben, geschrieben steht:

%{UNIT}T    

Die benötigte Zeit zur Bearbeitung der Anfrage in einer durch UNIT angegebenen Zeiteinheit. Gültige Einheiten sind ms für Millisekunden, us für Mikrosekunden und s für Sekunden. Die Verwendung von s ergibt dasselbe Ergebnis wie %T ohne Formatierung; die Verwendung von us ergibt dasselbe Ergebnis wie %D. Die Kombination von %T mit einer Einheit ist ab 2.2.30 verfügbar.

Antwort2

Ich weiß nicht, wie ich das Problem beheben kann, das Sie mit Apache 2.2.3 haben, aber ...

Wenn nichts anderes funktioniert, schauen Sie sich Folgendes an (je nachdem, wie wichtig dies für Sie ist):

  1. Holen Sie sich die neueste Version von Apache und kompilieren Sie sie, da sie nicht das tut, was sie soll, und ein Fehler sein könnte. Vielleicht funktioniert es ja, ein Versuch kann nicht schaden
  2. Wenn das nicht funktioniert, bearbeiten Sie den Code und lassen Sie ihn das tun, was Sie wollen

Ich habe es gerade auf 2.4.10 getestet und es funktioniert

127.0.0.1 - - [11/Oct/2015:16:37:50 -0400] 156545 "GET /cgi-bin/test.cgi HTTP/1.1" 200 175 1206218

verwandte Informationen