Kontakt aufnehmen

Apache: Server Logging und Status

Der Apache Server kann so konfiguriert werden, dass der komplette "Arbeitsablauf" aufgezeichnet wird. Wo diese Log Dateien gespeichert sind und was sie enthalten können, wird hier beschreiben.

CustomLog

Die Log-Datei die in der Direktive CustomLog angegeben wird, protokolliert den Zugriff auf den Apache Webserver. Welche Daten dabei in der CustomLog Datei stehen wird über die Direktive LogFormat bestimmt.

#Die Voreinstellung sieht so aus:
CustomLog logs/access_log common #Linux
CustomLog logs/access.log common #Windows

Dabei wird mit logs/access.log angegeben wo die Datei liegt und common sagt aus welches LogFormat verwendet wird. Die Logdatei kann aber auch mit einer Pipe (Senkrechtstrich |) an ein Programm weitergereicht werden um eine automatische Auswertung der Logdatei zu generieren oder aber auch um Log Dateien die sehr groß sind auszutauschen, etwa mit dem mitgelieferten Programm Rotatelogs.

CustomLog "| bin/rotatelogs.exe access.log 86400" common #Windows
CustomLog "| bin/rotatelogs access_log 86400" common #Linux

Dies hat den Vorteil, dass der Apache nicht dauerhaft auf die Logdatei zugreift und diese zwischendurch auch geleert oder einfacher ausgewertet werden können.

LogFormat

Das LogFormat definiert wie die CustomLog Datei aussieht. Standardmäßig sind bereits 4 Formate definiert die benutzt werden können.

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" 
          "%{User-Agent}i"" combined
# HINWEIS: Alles in einer Zeile


LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Natürlich können auch eigene Formate definiert werden. Dazu muss nur eine weitere LogFormat Direktive geschrieben und Ihr ein eindeutiger Name zugeordnet werden. Anschließend das Format noch der CustomLog-Direktive zugewiesen und schon gibt es die gewünschten Daten in der Log Datei.

LogFormat "%h "%r" " meinFormat
CustomLog logs/access.log meinFormat

Innerhalb des Formats können mehrere Platzhalter für die jeweiligen Daten eingesetzt werden. Hier die wichtigsten:.
" - "
t - Tabulator
n - neue Zeile
%h - IP Adresse des Clients
%i - Ident Lookup
%u - Username bei HTTP-Authentifizierung z.B. über .htacces
%t - Ende der Bearbeitungszeit des Servers
%r - Clientbefehl GET etc. inkl. GET-Variablen
%>s - Statuscode der an den Client zurückgesendet wird
%b - Größe der an den Client zurückgesendeten Daten, ohne HTTP Header
%U - Der angeforderte URL-Pfad.
%{User-agent}i - Anzeige der vom Client gesendeten Browserinformationen
%{Referer}i - Anzeige des vom Client gesendeten Referer

ErrorLog

Im ErrorLog werden alle Fehlermeldungen des Apache Webservers gespeichert. Durch die unterschiedlichen LogLevel werden die Anzahl der anzuzeigenden Fehler eingestellt.

ErrorLog logs/error.log #Windows
ErrorLog logs/error_log #Linux

Selbstverständlich kann auch wie beim CustomLog das ganze mit einer Pipe (|) an ein externes Programm weitergegeben werden.

LogLevel

Der LogLevel sagt aus welche Informationen in der ErrorLog-Datei gespeichert werden. Dabei gibt es die folgenden Level mit ihrer Bedeutung.
emerg - Dies protokolliert nur Abstürze oder Ausfälle des Servers.
alert - Dies protokolliert Ereignisse nach denen der Serveradministrator dringend eingreifen sollte.
crit - kritische Situationen die den Betrieb des Servers beeinträchtigen können.
error - Fehlermeldungen die Beachtung finden sollten.
warn - einfache Warnmeldungen
notice - Notizen des Webservers die immer protokolliert werden. Zum Beispiel das starten und stoppen des Servers.
info - reine Informationsmeldungen die keine Fehler sind
debug - allgemeine Meldungen des Servers werden in dieser Stufe protokolliert.
Dies ist die Reihenfolge der vorhandenen LogLevel, wenn der LogLevel auf warn gestellt wird werden zusätzlich auch error, crit, alert und emerg Meldungen protokolliert usw..

Server Status (Modul)

Mit dem Modul mod_status kann eine eigene Statusseite des Apache Webservers erzeugt werden. Die anschließend unter http://localhost/server-status eingesehen werden kann. Mit server-status?refresh=n kann die Statusseite alle n Sekunden aktualisiert werden. Beispiel:

LoadModule status_module modules/mod_status.so
<Location /server-status>
  SetHandler server-status
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</Location>

Server Info (Modul)

Mit dem Modul mod_info kann eine Informationsseite des Apache Webservers über seine aktuelle Modulkonfiguration mit allen Informationen erzeugt werden.

LoadModule info_module modules/mod_info.so
<Location /server-info>
  SetHandler server-info
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</Location>

Fehlerbehandlung

Für die Behandlung von HTTP-Statusfehlern kann mit ErrorDocument eine HTML-Seite oder ein einfacher Fehlertext angegeben werden die bei einem Fehler angezeigt werden. Es gibt die Möglichkeiten bei einem Fehler einen Statischen Text, eine lokale Fehlerseite, eine entfernte Fehlerseite oder eine Weiterleitung zu machen. Beispiel:

ErrorDocument 404 "Die Seite ist nicht vorhanden"
ErrorDocument 404 error/404.html
ErrorDocument 404 http://domain1.org/index.html

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Weiterlesen: ⯈ Serverseitige Programmierung

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern