# Logdatei

Eine Logdatei (auch Protokolldatei, Ereignisprotokolldatei; englisch log file) enthält das automatisch geführte Protokoll aller oder bestimmter Aktionen von Prozessen auf einem Computersystem.
Wichtige Anwendungen finden sich vor allem bei der Prozesskontrolle und Automatisierung. Prinzipiell werden alle Aktionen mitgeschrieben, die für eine spätere Untersuchung (Audit) erforderlich sind oder sein könnten. Der Flugschreiber in Flugzeugen ist ein Beispiel für kontinuierliche Protokollierung, die jedoch selten ausgewertet wird, zum Beispiel nach einem Unfall.
Im Bereich der Datenbanken gibt es ein Transaktionsprotokoll, in der Änderungen an der Datenbank von korrekt abgeschlossenen Transaktionen (per Commit abgeschlossen) festgehalten werden, um im Fall eines Fehlers (z. B. Systemabsturz) den aktuellen Datenbestand wiederherstellen zu können.
Das Wort Logfile wird in Teilen der Blogosphäre zunehmend auch als Begriff für einen Blog-Eintrag genutzt. Mit dieser Bedeutung wurde der Begriff zunächst nur von Log-Files.de (diese Seite ist inzwischen gesperrt) verwendet, inzwischen ist er gerade bei Blogs mit reinem Tagebuch-Charakter beliebt.

## Grundlagen

Auf einem PC können Protokolldateien bestimmter Aktionen von einem oder mehreren Nutzern an einem Rechner geschrieben werden, ohne dass diese es bemerken oder ihre Arbeit beeinflusst wird. Wesentlich ist hierzu das Systemlogbuch (unter Linux meist in /var/log/messages, aber auch Windows NT und Nachfolger schreiben entsprechende Einträge in eines oder mehrere Ereignisprotokolle), wenn sie entsprechend konfiguriert werden. Darin können u. a. die Anmeldungen am System protokolliert werden, aber auch andere wichtige Informationen.
Außer dem Betriebssystem selbst schreiben meist Hintergrundprogramme (z. B. ein E-Mail-Server, ein Proxyserver und anderes) in Logdateien, um Aktionsmeldungen, Fehlermeldungen und Hinweise persistent (dauernd) oder temporär verfügbar zu halten. Ähnliches gilt für Installationsprogramme, Firewalls, Virenscanner und dergleichen. Logdateien werden im Idealfall auf einem von der Anwendung getrennten Laufwerk gespeichert, um die I/O-Ressourcen der Anwendung nicht einzuschränken.
Logdateien werden auch von Webservern erstellt, können aber auch außerhalb des Internets bei Untersuchungen der Benutzerfreundlichkeit von Programmen, allgemeinem Nutzerverhalten oder der Fehlersuche in einem System genutzt werden.
Die Logdatei wird bei der Logdateianalyse untersucht.

## Aufbau einer Protokollzeile

Prinzipiell enthält eine Protokollzeile in einer Logdatei meist ein Ereignis sowie das dazugehörige Datum und die dazugehörige Uhrzeit als Zeitstempel. Dabei wird die Zeitangabe meist vorangestellt, da es sich bei einer Logdatei um eine chronologische Aufstellung handelt.

### Protokolldatei

Bei dem Beispiel handelt es sich um den (in der Mitte gekürzten) Inhalt der Protokolldatei \WINDOWS\system32\wbem\Logs\setup.log unter Windows XP; links der Zeitstempel, rechts die zu dieser Zeit ausgeführte Aktion:

### Serverlog

Eine typische Webserver-Logdatei („Combined Log Format“) sieht folgendermaßen aus (Auszug mit zwei Einträgen):
Erklärung der ersten Zeile des Beispieleintrages :
| Bedeutung | Wert im Beispiel | Erläuterung |
| IP-Adresse | 183.121.143.32 | IP-Adresse des anfordernden Hosts |
| Unbelegt | – | vorgesehen für RFC-1413-Identität, die jedoch standardmäßig (-) nicht ermittelt wird |
| Wer | – | Ggf. Nutzername aus einer HTTP-Authentifizierung, sonst „-“ |
| Wann | [18/Mar/2003:08:04:22 +0200] | Zeitstempel (Datum, Uhrzeit, Zeitverschiebung) |
| Was | "GET /images/logo.jpg HTTP/1.1" | Anforderung, eines Bildes, Übertragungsprotokoll |
| Ok | 200 | HTTP-Statuscodes (200=Erfolgreiche Anfrage) |
| Wie viel | 512 | Ggf. Menge der gesendeten Daten (Byte), sonst (z. B. bei Umleitungen) „-“ |
| Woher | "http://www.wikipedia.org/" | Von welcher Internetseite (URI) wird angefordert |
| Womit | "Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.6)" | Mit welchem Webbrowser/Betriebssystem/Oberfläche |
| Bemerkung: Woher? und Womit? entsprechen nicht dem Common Logfile Format. |||
Kann man selber auf einem Server mit der eigenen Webpräsenz keine Protokolldateien abrufen, dann ermöglichen verschiedene Webdienste (z. B. Nedstat oder W3 Statistics) das Setzen eines kleinen Zählers auf der eigenen Webpräsenz. Dieser Zähler wird immer wieder beim Abrufen der Seite vom Anbieterserver geladen, wo daraufhin eine Auswertung der Zugriffe mithilfe der Zugriffs-Protokolldatei in Form von Tabellen und Grafiken erstellt wird. Hilfsmittel dabei können Zählpixel und HTTP-Cookies sein, wobei es letztere Internetseitenbetreibern durch das Speichern von eindeutigen Seriennummern ermöglichen, Logdateien über einzelne zugreifende Computer über einen längeren Zeitraum zu führen.

## Log-Levels

Da das Loggen aller Programmereignisse die für Logdateien verfügbaren Ressourcen innerhalb kurzer Zeit aufbrauchen würde und die Auffindbarkeit bestimmter Ereignisse erschweren würde, werden verschiedene Dringlichkeitsstufen definiert, welche nach Bedarf ein- und ausgeschaltet werden können.
Übliche Definition von Log-Levels:

### Fatal

    Fehler, welcher zur Terminierung der Anwendung führt.

### Error

    Laufzeitfehler, welcher die Funktion der Anwendung behindert, oder unerwarteter Programmfehler.

### Warning

    Aufruf einer veralteten Schnittstelle, fehlerhafter Aufruf einer Schnittstelle, Benutzerfehler oder ungünstiger Programmzustand.

### Info

    Laufzeitinformationen wie der Start und Stopp der Anwendung, Benutzeranmeldungen und -abmeldungen, sowie durchgeführte Geschäftstransaktionen.

### Debug

    Informationen zum Programmablauf. Wird im Normalfall nur in der Entwicklung oder zur Nachvollziehung eines Fehlers verwendet.

### Trace

    Detaillierte Verfolgung des Programmablaufs, insbesondere zur Nachvollziehung eines Programmierfehlers.
Wichtig ist hierbei, dass in Logdateien und -datenbanken nur Informationen zum Programmablauf und -zustand erhoben werden sollen, jedoch keine Informationen zu den Benutzern des Programms.

## Zulässigkeit in Deutschland

Nach § 15 des deutschen Telemediengesetzes dürfen Diensteanbieter personenbezogene Daten eines Nutzers nur erheben und verwenden, soweit dies erforderlich ist, um die Inanspruchnahme von Telemedien zu ermöglichen und abzurechnen. Über das Ende des Nutzungsvorgangs hinaus dürfen Nutzungsdaten nur gespeichert werden, soweit sie für Zwecke der Abrechnung mit dem Nutzer erforderlich sind. Auf dieser Grundlage hat das Amtsgericht Berlin 2007 entschieden, dass die Protokollierung der IP-Adressen der Benutzer eines öffentlich zugänglichen Internetportals ohne deren Einwilligung unzulässig ist.

## Logger

Logger sind Softwarekomponenten für Computerprogramme, welche in eine Logdatei schreiben oder diese auslesen.
Java
* Log4j
.NET
* Awesome .NET Logging. In: Github. Abgerufen am 6. März 2017 (Liste von .NET Logging-Libraries).
* Enterprise Library. In: CodePlex, patterns & practices. Microsoft, abgerufen am 11. April 2013 (englisch).
* .NET Logging Framework. The Object Guy, abgerufen am 11. April 2013 (englisch).
* SmartInspect. GurockSoftware, abgerufen am 11. April 2013 (englisch).
Delphi
* Log4Delphi. Open Source Projekt, abgerufen am 19. September 2013 (englisch).
* nxLogging

## Abgrenzung zu anderen Technologien

Im Rahmen des Application Lifecycle Management werden, zusätzlich zu dezentralen Logdateien, auch zentralisierte Logging-Datenbanken eingesetzt, um eine zentrale Auswertung von Programmfehlern und -informationen zu ermöglichen. Derartige Datenbanken können beispielsweise über ein Webservice oder mittels Log-Scraping befüllt werden.
Für eine Echtzeitauswertung sind Logdateien nicht geeignet. Hierfür kommen stattdessen Monitoring-Mechanismen zum Einsatz, etwa Performance Counter und Event Tracing for Windows (ETW) auf Windows-Systemen oder collectd (system statistics collection daemon) unter Linux-Systemen.
Eine weitere Technologie sind Operations-Datenbanken, welche unter anderem eine Auswertung des Zustands von Geschäftsprozessen ermöglicht.