>> Inhaltsverzeichnis >> Anleitung für Entwickler

Logging und Fehlermeldungen

Wo finde ich die Log-Daten?

YANA schreibt alle Log-Einträge in eine Tabelle der Datenbank. Dies geschieht jedoch nur, wenn Logging aktiviert ist. Sie können dies deaktivieren, um Speicherplatz zu sparen. Dieses Feature ist nach der Installation per Default deaktiviert.

Wie aktiviere ich Logging?

Wie erstelle ich einen Log-Eintrag?

<?php 
global $YANA;

/* Einen Text in die Logs schreiben */
$log = new Log("Mein Log-Eintrag");
$YANA->report($log);

/* Text und Dump von Daten */
$dump $irgendwelche_daten;
$log  = new Log("Mein Log-Eintrag",$dump);
$YANA->report($log);

/* den erzeugten Log-Eintrag ansehen */
print $log->getLog();
?>

Wie erzeuge ich eine Fehlermeldung?

Fehlermeldung erzeugen

Durch Aufruf von $YANA->report(Report $report) kann eine Textmeldung erzeugt werden.

Der Parameter $report ist eine Instanz einer der folgenden Klassen. Diese Klassen haben die gemeinsame Oberklasse "Report".

Klasse Beschreibung
Log für Ausgabe in Log-Datei
Message Erfolgsmeldung (Bildschirm)
Warning Warnung
Alert Hinweis
Error Fehler

akzeptierte Typen für Parameter $report

Der Konstruktor wird wie folgt aufgerufen:

new Log(string $text [, mixed $data]);

Das folgende Beispiel schreibt eine Meldung in die Log-Datei und erzeugt dann einen Text für die Ausgabe am Bildschirm.

$YANA->report( new Log("IO-ERROR: Unable to read file $a") );
$YANA->report( new Error('NOT_READABLE', array('FILE' => $a) ) );

Verwendung

Der Parameter $text kann ein Error-Code sein, oder auch ein beliebiger Fließtext. Für Bildschirmausgabe sollten Error-Codes verwendet werden. Für Ausgaben in die Log-Datei bietet sich englischer Fließtext an. Der Parameter $data ist optional und enthält weitere Optionen. Beispielsweise den Datensatz, der nicht gespeichert werden konnte, oder den Namen einer Datei, die gerade nicht geöffnet werden kann.

Gültige Error-Codes für den Parameter $text sind unter anderem (AUSZUG):

Code Beschreibung Textauszug
200 Erfolg Änderungen wurden gespeichert. Vielen Dank !!!
500 Allgemeiner Fehler Es ist ein Fehler aufgetreten...
403 Fehler: Zugriff verweigert Passwort erforderlich. Sie betreten einen geschützten Bereich...
INPUT_INVALID Fehler: Falsche Eingabe Ein gewählter Parameter ist ungültig...
404 Fehler: Datei nicht gefunden Bitte überprüfen Sie die angegebene URL und versuchen Sie es erneut.
ALLREADY_EXISTS Fehler: Eintrag doppelt Es konnte kein neuer Eintrag mit der id "%ID%" erzeugt werden, weil bereits ein anderes Eintrag mit diesem Namen existiert.
FILE_NOT_CREATED Fehler: IO-Error Die Datei "%FILE%" konnte nicht erzeugt werden.
NOT_WRITEABLE Fehler: IO-Error Der Schreibzugriff auf die Ressource "%FILE%" ist gescheitert. Daten konnten nicht gespeichert werden.
NOT_READABLE Fehler: IO-Error Der Zugriff auf die Ressource "%FILE%" ist gescheitert. Daten konnten nicht gelesen werden.

akzeptierte Belegungen für Parameter $text

Enthaltene Token, wie %FILE% werden ersetzt in der folgenden Weise:

<?php 
$YANA->report( new Warning('FILE_NOT_CREATED', array('FILE' => $a)) );
?>

Das besondere an $YANA->report() ist, dass Sie damit gleichzeitig Textmeldungen in die Log-Datei schreiben UND Meldungen am Bildschirm ausgeben können. Wird die Methode mehrmals aufgerufen, werden mehrere Textmeldungen erzeugt.

<?php 
$YANA->report( new Warning('FILE_NOT_CREATED', array('FILE' => $a)) );
/* ... */
$YANA->report( new Alert('NOT_WRITEABLE', array('FILE' => $a)) );
/* ... */
$YANA->report( new Error('500') );
$YANA->report( new Log("Input/Output Error in File $a."$lost_data) );
return false;
?>

Der Aufruf von Yana->report erzeugt nur die Textmeldung, bricht aber das Programm nicht ab. Um das Programm zu unterbrechen, verwenden Sie die Methode Yana->exitTo. Bitte beachten Sie: verwenden Sie NICHT die PHP-Methoden exit() oder die(). Andernfalls wird keine Ausgabe erzeugt.

Das Programm unterbrechen

Die Methode Yana->exitTo( [string $action] ) kann verwendet werden um das Programm zu unterbrechen und anzugeben, welche Aktion anschließend ausgeführt werden soll. Das heißt, die Verarbeitung der aktuellen Aktion wird abgebrochen und stattdessen wird das Skript mit der Aktion $action fortgesetzt.

Dabei gibt das Framework alle Textmeldungen an den Browser aus und ruft sich selbst erneut auf. Der Parameter $action entspricht dabei dem URL-Parameter "action".

Wenn der Parameter $action nicht angegeben wird, dann wird stattdessen automatisch die Startseite aufgerufen.

Sie können für $action die spezielle Aktion "null" verwenden, falls Sie das Programm beenden möchten OHNE dass mit der Verarbeitung einer anderen Aktion fortgesetzt werden soll.

Im Folgenden ein einfaches Beispiel:

<?php 
// erzeuge einige Textmeldungen
$YANA->report( new Log('Ein Eintrag für die Log-Files') );
$YANA->report( new Alert('NOT_WRITEABLE', array('FILE' => $a)) );
// stoppe die Bearbeitung des Programms und setze es mit der Aktion 'index' fort
$YANA->exitTo('index');

// erzeuge eine Fehlermeldung
$YANA->report( new Error('Access denied!') );
// Abbruch des Programm (setze NICHT mit anderer Aktion fort)
$YANA->exitTo('null');

// Abbruch des Programms und Aufruf der Startseite
$YANA->exitTo();
?>

Autor: Thomas Meyer, www.yanaframework.net