Logdatei
Verfolgen des Programmablaufs
basename(__FILE__)
Wärend der Entwicklung eines Projektes sollten die einzelnen Schritte auf ihre Funktionalität geprüft werden. Damit ist bei einem Fehler sogleich zu erkennen, wo er auftrat. Steht das Programm auf dem Produktiven Server, sollten keine Fehlermeldungen oder Statusmeldungen ausgegeben werden, sondern sie sollen in eine Logdatei geschrieben werden.
Man füge hierzu if-Abfragen ein, die kontrollieren, ob z.B. eine Globale-Variable
vorhanden ist und welchen Wert sie hat.
Die Prüfungsergebnisse werden in eine Logdatei geschrieben, dazu wird
eine Funktion aufgerufen oder eine Datei mit einer solchen Funktion per include() eingebunden.
Das folgende Beispiel wächst natürlich nicht über sich selbst hinaus:
<?php
// etwas wichtiges wurde verändert, das muss ich nun fest halten
// Name der Logdatei - normalerweise wäre dies wohl eine $_SESSION['QID'] mit Zeitstempel
$QID="logDatei";
if ($result == "OKidOKi") { // falls ein Resultat im Rahmen der Erwartungen ausviel
$logline[0]=">>> ".basename(__FILE__); // filename in dem der Logeintrag erzeugt wurde
$logline[1]="Während QID: ".$QID; // Sessionvariable dokumentieren
$logline[2]="Hat der User: ".$Usrnamen; // weitere Infos
$logline[3]="Dies und das gemacht."; // und was ich sonst im Log schreiben will
} else { // falls $result nicht OKidOKi
$logline[0]=">>> ".basename(__FILE__); // filename in dem der Logeintrag erzeugt wurde
$logline[1]="Während QID: ".$QID; // Sessionvariable dokumentieren
$logline[2]="ERROR bei User: ".$Usrnamen; // weitere Infos
$logline[3]="$reult"; // Fehlermeldung
}
// include die Funktion LogWriter.php (siehe weiter unten)
// welche die $loglines in ein File schreibt welches den Namen der Variablen (QID) bekommt
include ("logWriter.php");
// löschen der Log-Linies, damit diese nicht wiederholt werden
unset($logline[1], $logline[2], $logline[3]);
logDatei geschrieben: Sat, 19 May 2012 21:13:19 +0200
Log Writer
Die eingebundene Datei mit der Funktion, welche das LogFile schreibt, sieht so aus:
<?php
########################## open $QID ########################## // öffnen der logDatei namens $QID (falls es existiert) und am Dateiende Log-Eintrag anhängen // oder neues log-file erstellen, aber der Ordner muss existieren, falls einer angegeben wurde! $fh = fopen($QID, "a"); // relative path ########################## write logline[] ######################### // der array '$logline' wurde in dem Script gefüllt, welches dieses Script includet // schreibe nun die loglines ins Logfile if($fh) { fputs($fh,">>> ".date("r", time())."\n"); foreach ($logline as $value) { fputs($fh,$value."\n"); } fputs($fh,"\n"); echo("<br /><strong>$QID geschrieben: ".date("r", time())."</strong>"); // nur hier nützlich } ########################## close $QID ######################### // close the writen file fclose ($fh); ?>
Alarm
Statt lautstarke Fehlermeldungen im Browser auszugeben, könnte eine Fehlerbehandlungsfunktion durch den Versand einer E-Mail an den Webmaster abgerundet werden.
Zur Fehlerbehandlung siehe auch:
errors.php
Zur Sicherheit siehe auch:
sicherheit.php
Zur Sessions siehe auch:
session_form.php