Hallo,
Ich stehe gerade vor einem Problem, in dem ich nicht weiterkomme, bzw. noch keine "durchdachte" Lösung gefunden habe.
Folgendes Problem:
Ich habe mehrere Klassen, die ich "überwachen" möchte, d.h. ich möchte wissen, wenn manche Klassen einen bekannten, möglichen Fehler zurückgeben.
Beispiel:
Klasse zu Übertragung von Dateien mittels XMLRPC.
Wird eine Datei mittels XMLRPC übertragen, so können viele, bekannte und mögliche Fehler auftreten, z.b.:
- Server nicht erreichbar
- Datei falsch übermittelt (Hash)
- etc.
Diese Fehler möchte ich nun abfangen und loggen, damit ich diesen Fehler später untersuchen und beheben kann.
Derzeit habe ich mir folgendes überlegt:
Ich habe eine Liste von möglichen Errorcodes, die beschreiben, was der Fehler ist und wo dieser Auftreten kann:
Dabei hat jede Klasse einen eigenen Error-ID Bereich.
In jeder Klasse erstelle ich nun die Abfragen um die Fehler zu erkennen, und übergebe eine Error-ID aus $_e.
An jedem kritischem Punkt einer Methode, rufe ich die errorLog() Funktion auf, der ich ebenfalls eine Error-ID übergebe.
Anhand der Stärke des Fehlers (ERR_CRITICAL_ERROR), entscheide ich in der errorLog()-Funktion, was nun passiert (SMS/eMail-Benachrichtigung, etc).
Was mich nun gründsätzlich stört, ist, das in jeder Methode immer eine extra Funktion drinnen hab, und ansich nur an den Stellen, in der wirklich ein Kritischer-Fehler entstehen kann.
Ich möchte nun eine Art Überwachung, bei der ich jeden Rückgabewert nachvollziehen kann und dynamisch entscheiden kann, welche Fehlerstärke nun was auslößt.
Und zwar denke ich mir, das jeder Rückgabewert einer Methode, *immer* durch eine errorLog()-Funktion läuft, und ich so anhand der übermittelten Error-ID entscheiden kann, was nun kritisch ist, und was nicht.
Ich weiß, ist alles ein wenig schwierig zu erklären, ich hoffe ich habe es soweit verständlich erklärt und ihr könnt nachvollziehen, was ich vorhabe.
Was meint Ihr? Was gibt es sonst für Lösungen?
Wie regelt Ihr das, wenn eine Methode mehrere Rückgabewerte zurückgeben kann?
Und gibt es eine Möglichkeit, direkt in einer Methode/Funktion den eigenen Klassen/Methoden/Funktions-Namen anzuzeigen oder gar die aktuelle Zeile auszugeben, in der sich der Parser gerade findet? (Bei parse-errors zeigt PHP ebenfalls eine Zeile an).
Vielen Dank.
Gruß
Kevin
Ich stehe gerade vor einem Problem, in dem ich nicht weiterkomme, bzw. noch keine "durchdachte" Lösung gefunden habe.
Folgendes Problem:
Ich habe mehrere Klassen, die ich "überwachen" möchte, d.h. ich möchte wissen, wenn manche Klassen einen bekannten, möglichen Fehler zurückgeben.
Beispiel:
Klasse zu Übertragung von Dateien mittels XMLRPC.
Wird eine Datei mittels XMLRPC übertragen, so können viele, bekannte und mögliche Fehler auftreten, z.b.:
- Server nicht erreichbar
- Datei falsch übermittelt (Hash)
- etc.
Diese Fehler möchte ich nun abfangen und loggen, damit ich diesen Fehler später untersuchen und beheben kann.
Derzeit habe ich mir folgendes überlegt:
Ich habe eine Liste von möglichen Errorcodes, die beschreiben, was der Fehler ist und wo dieser Auftreten kann:
PHP-Code:
# DB
$_e[1] = array("DB_CONNECTION_FAILED", "db connection failed", ERR_CRITICAL_ERROR);
# Exec
$_e[50] = array("EXEC_ERRORCODE_FALSE", "return code was not 0", ERR_NORMAL);
In jeder Klasse erstelle ich nun die Abfragen um die Fehler zu erkennen, und übergebe eine Error-ID aus $_e.
An jedem kritischem Punkt einer Methode, rufe ich die errorLog() Funktion auf, der ich ebenfalls eine Error-ID übergebe.
Anhand der Stärke des Fehlers (ERR_CRITICAL_ERROR), entscheide ich in der errorLog()-Funktion, was nun passiert (SMS/eMail-Benachrichtigung, etc).
Was mich nun gründsätzlich stört, ist, das in jeder Methode immer eine extra Funktion drinnen hab, und ansich nur an den Stellen, in der wirklich ein Kritischer-Fehler entstehen kann.
Ich möchte nun eine Art Überwachung, bei der ich jeden Rückgabewert nachvollziehen kann und dynamisch entscheiden kann, welche Fehlerstärke nun was auslößt.
Und zwar denke ich mir, das jeder Rückgabewert einer Methode, *immer* durch eine errorLog()-Funktion läuft, und ich so anhand der übermittelten Error-ID entscheiden kann, was nun kritisch ist, und was nicht.
Ich weiß, ist alles ein wenig schwierig zu erklären, ich hoffe ich habe es soweit verständlich erklärt und ihr könnt nachvollziehen, was ich vorhabe.
Was meint Ihr? Was gibt es sonst für Lösungen?
Wie regelt Ihr das, wenn eine Methode mehrere Rückgabewerte zurückgeben kann?
Und gibt es eine Möglichkeit, direkt in einer Methode/Funktion den eigenen Klassen/Methoden/Funktions-Namen anzuzeigen oder gar die aktuelle Zeile auszugeben, in der sich der Parser gerade findet? (Bei parse-errors zeigt PHP ebenfalls eine Zeile an).
Vielen Dank.
Gruß
Kevin
Kommentar