| Config-Manager documentation | view source | Contained in the Config-Manager distribution. |
Config::Manager::Report - Error Reporting and Logging Module
use Config::Manager::Report qw(:all);
$logobject = Config::Manager::Report->new([TOOL[,PATH[,FILE]]]);
$newlogobject = $logobject->new([TOOL[,PATH[,FILE]]]);
$default_logobject = Config::Manager::Report->singleton();
$logobject->report($CMD,$LEVEL,@text);
Config::Manager::Report->report($CMD,$LEVEL,@text);
Fuer ($CMD,$LEVEL) sollte stets eine der folgenden
(oeffentlichen) Konstanten verwendet werden:
@TRACE
@INFO
@WARN
@ERROR
@FATAL
Beispiel:
Config::Manager::Report->report(@ERROR,@text);
$logobject->trace();
Config::Manager::Report->trace();
$logfile = $logobject->logfile();
$logfile = Config::Manager::Report->logfile();
[ $oldlevel = ] $logobject->level([NEWLEVEL]);
[ $oldlevel = ] Config::Manager::Report->level([NEWLEVEL]);
[ $oldflag = ] $logobject->notify([NEWFLAG]);
[ $oldflag = ] Config::Manager::Report->notify([NEWFLAG]);
$lines = $logobject->ret_hold();
@text = $logobject->ret_hold();
$lines = Config::Manager::Report->ret_hold();
@text = Config::Manager::Report->ret_hold();
$logobject->clr_hold();
Config::Manager::Report->clr_hold();
Das Logging ist so realisiert, dass die Ausgabe der Meldungen auf den verschiedenen Ausgabekanaelen einzeln (unabhaengig voneinander) gesteuert werden kann. Es gibt die Ausgabekanaele STDOUT, STDERR, Logdatei und Halde.
STDOUT und STDERR sind die ueblichen Standard-Ausgabekanaele. Auf Wunsch koennen Meldungen aber auch in das Logfile geschrieben werden. Auf der Halde koennen Meldungen gekellert werden. Die Meldungen werden dann erst auf Anforderung auf dem Bildschirm ausgegeben.
Bei Verwendung der Funktion "ReportErrorAndExit()" aus dem Modul "Config::Manager::Base.pm" wird vor Beendigung des Programms die Halde auf STDERR ausgegeben, falls sie nicht leer ist.
Bei Verwendung der Standard-Konstanten @TRACE @INFO @WARN @ERROR @FATAL werden alle Meldungen immer auch in die Logdatei geschrieben, damit keine (moeglicherweise wichtige!) Information verlorengehen kann.
Das sollte man auch dann immer tun, wenn man diese Standard-Konstanten nicht verwendet.
private &_warn_($text,...)
Parameter: $text - Text der Warnungsmeldung
... - weitere Parameter, die Perl liefert
Rueckgabe: -
@WARN" verwenden.
$objekt->methode(); die Form
Config::Manager::Report->methode(); verwenden). private &_die_($text,...)
Parameter: $text - Text der Fehlermeldung
... - weitere Parameter, die Perl liefert
Rueckgabe: -
$objekt->methode(); die Form
Config::Manager::Report->methode(); verwenden). private &_adjust($pack,$file,$line,$sub,$hargs,$warray,$eval,$require)
Parameter: $pack - Package-Name des Aufrufers
$file - Dateiname des Aufrufers
$line - Zeilennummer des Aufrufers
$sub - Name der aufgerufenen Routine
$hargs - wahr falls Aufrufparameter vorhanden
$warray - wahr falls in List-Kontext aufgerufen
$eval - wahr falls eval-Aufruf
$require - wahr falls require-Aufruf
Rueckgabe:
$sub - aufbereiteter Name der aufgerufenen Routine
private &_ShortTime()
Rueckgabe: Die aktuelle Zeit im Format MMTT-HHMMSS
private &_LongTime()
Rueckgabe: Die aktuelle Zeit im Format TT.MM. HH:MM:SS
private &_which($self[,...])
Parameter: $self - Referenz auf Log-Objekt oder Klassenname
... - weitere (optionale) Parameter, die ggfs. an
"new()" weitergereicht werden (siehe dort)
Rueckgabe: $self, falls $self eine Objekt-Referenz ist,
oder eine Referenz auf das Singleton-Objekt sonst
private $self->DESTROY([$close])
- Auf (vorherige) Anforderung Ausgabe des Logfilenamens auf dem Bildschirm - Den Footer der Logdatei schreiben - Logdatei schliessen
Parameter: $self - Referenz auf das zu zerstoerende Objekt
$close - Optional; ein "true"-Wert, falls von
"close()" aufgerufen
Rueckgabe: Text der Fehlermeldung falls close(FILEHANDLE)
nicht erfolgreich, Leerstring falls alles OK
reserved &end()
Parameter: -
Rueckgabe: -
reserved &abort()
Parameter: Beliebig viele Zeilen Fehlermeldung (oder keine)
(MIT Newlines ("\n") wo gewuenscht!)
Rueckgabe: -
public Config::Manager::Report->singleton([...])
Config::Manager::Report->methode();" beziehen
sich auf das Singleton-Objekt und legen es automatisch an, falls es noch nicht
existiert (genauer gesagt alle Objekt-Methoden, in denen auf den Parameter
"$self" nur ueber die Funktion "&_which()" zugegriffen wird).
Parameter: ... - optionale Parameter, die ggfs. an "new()"
weitergereicht werden (siehe dort)
Rueckgabe: Gibt eine Referenz auf das Singleton-Objekt zurueck
oder einen String mit einer Fehlermeldung, falls das
Singleton-Objekt nicht erzeugt werden konnte
Config::Manager::Report->methode();" ist dabei dasselbe wie
"Config::Manager::Report->singleton()->methode();" oder wie
"$Singleton = Config::Manager::Report->singleton();" und
"$Singleton->methode();".
Config::Manager::Report->methode();") verwendet werden. Ausserdem darf der
Rueckgabewert dieser Methode nicht dauerhaft im Programm gespeichert werden,
da es sonst zu Fehlern kommen kann, wenn die Log-Datei inzwischen woanders
geschlossen wurde.
public $class->new([$tool[,$path[,$file]]])
Parameter: $class - Name der Klasse oder ein Objekt derselben Klasse
$tool - Optional; wird kein Toolname uebergeben, so wird er
in der Funktion ermittelt
$path - Optional; wird kein Logpfad angegeben, so wird er aus
der Konfiguration ausgelesen
$file - Optional; wird kein Dateiname angegeben, wird
automatisch einer vergeben
Rueckgabe: Eine Referenz auf das neue erzeugte Objekt, falls das
Oeffnen der Log-Datei und das Schreiben des Headers
in diese Log-Datei geklappt hat, ansonsten (bei einem
Fehler) ein String mit der entsprechenden Fehlermeldung
public $self->close()
Parameter: -
Rueckgabe: Ein Leerstring bei Erfolg, ein String mit der
entsprechenden Fehlermeldung bei einem Fehler
Config::Manager::Report->close();
public $self->report($command[,$level[,@zeilen]])
Besonderheit: Der Stacktrace wird nie auf dem Bildschirm ausgegeben,
sondern nur in das Logfile. Damit sind fuer den Benutzer
die Fehlermeldungen uebersichtlicher.
Parameter: $self - Referenz auf Log-Objekt oder Klassenname
(Es wird das Singleton-Objekt verwendet, falls die Methode
als Klassen- und nicht als Objekt-Methode aufgerufen wurde)
$command - Angabe darueber, wohin die Meldung geleitet
werden soll. Moegliche Werte:
$TO_HLD $TO_OUT $TO_ERR $TO_LOG
$FROM_HOLD $USE_LEADIN $STACKTRACE
Diese Werte koennen beliebig durch Addition
oder Bit-Or ("|") kombiniert werden.
$level - Auf welcher Stufe ist die Meldung einzuordnen:
$LEVEL_TRACE $LEVEL_INFO $LEVEL_WARN
$LEVEL_ERROR $LEVEL_FATAL
@zeilen - Beliebig viele weitere Parameter. Jeder wird als
Textzeile fuer das Log interpretiert. Die Zeilen
sollten nicht mit Newlines abgeschlossen werden,
ausser man will (entsprechend viele) Leerzeilen
nach der betreffenden Meldungszeile erzwingen.
Rueckgabe: -
Config::Manager::Report->report($FROM_HOLD+$TO_ERR);
Config::Manager::Report->report($FROM_HOLD+$TO_HLD);
Config::Manager::Report->report($FROM_HOLD+$TO_HLD+$TO_ERR);
public $self->trace()
Parameter: $self - Referenz auf Log-Objekt oder Klassenname
(Es wird das Singleton-Objekt verwendet, falls die Methode
als Klassen- und nicht als Objekt-Methode aufgerufen wurde)
Rueckgabe: -
Config::Manager::Report->trace();
(unter Verwendung der Default-Logdatei) oder
$objekt->trace();
(unter Verwendung der dem "$objekt" zugeordneten Logdatei)
level()" direkt
hierunter) vom Default-Wert ("$LEVEL_TRACE") auf den Wert "$LEVEL_INFO",
werden alle Trace-Ausgaben effizient unterdrueckt, d.h. Trace-Informationen
werden dann gar nicht erst erzeugt, sondern die Methode "trace()" kehrt
sofort (nach einem "if") mit "return" zur aufrufenden Routine zurueck. public $self->level([$value])
$SHOW_ALL $LEVEL_TRACE $LEVEL_INFO
$LEVEL_WARN $LEVEL_ERROR $LEVEL_FATAL
$SHOW_ALL", bzw.
"$LEVEL_TRACE", die Default-Einstellung) bewirkt, dass alle Meldungen
mit einem Level kleiner als diesem Wert unterdrueckt werden (und insbesondere
auch nicht in der Logdatei erscheinen).
Parameter: $self - Referenz auf Log-Objekt oder Klassenname
(Es wird das Singleton-Objekt verwendet, falls die Methode
als Klassen- und nicht als Objekt-Methode aufgerufen wurde)
$value - Optional der neue Wert
Rueckgabe: Es wird immer der bisherige Wert zurueckgeliefert.
public $self->logfile()
Parameter: $self - Referenz auf Log-Objekt oder Klassenname
(Es wird das Singleton-Objekt verwendet, falls die Methode
als Klassen- und nicht als Objekt-Methode aufgerufen wurde)
Rueckgabe: Gibt den Namen und Pfad der Logdatei zurueck.
public $self->notify([$value])
Parameter: $self - Referenz auf Log-Objekt oder Klassenname
(Es wird das Singleton-Objekt verwendet, falls die Methode
als Klassen- und nicht als Objekt-Methode aufgerufen wurde)
$value - Optional der neue Wert
Rueckgabe: Es wird immer der bisherige Wert zurueckgeliefert.
public $self->ret_hold()
Parameter: $self - Referenz auf Log-Objekt oder Klassenname
(Es wird das Singleton-Objekt verwendet, falls die Methode
als Klassen- und nicht als Objekt-Methode aufgerufen wurde)
Rueckgabe: Liste der Zeilen der Halde
(jedes Element der Liste ist eine Zeile der Halde)
- oder -
Anzahl der Zeilen auf der Halde
public $self->clr_hold()
Parameter: $self - Referenz auf Log-Objekt oder Klassenname
(Es wird das Singleton-Objekt verwendet, falls die Methode
als Klassen- und nicht als Objekt-Methode aufgerufen wurde)
Rueckgabe: -
Config::Manager(3), Config::Manager::Base(3), Config::Manager::Conf(3), Config::Manager::File(3), Config::Manager::PUser(3), Config::Manager::SendMail(3), Config::Manager::User(3).
This man page documents "Config::Manager::Report" version 1.7.
Steffen Beyer <sb@engelschall.com> http://www.engelschall.com/u/sb/download/ Gerhard Albers
Copyright (c) 2003 by Steffen Beyer & Gerhard Albers. All rights reserved.
This package is free software; you can use, modify and redistribute it under the same terms as Perl itself, i.e., under the terms of the "Artistic License" or the "GNU General Public License".
Please refer to the files "Artistic.txt" and "GNU_GPL.txt" in this distribution, respectively, for more details!
This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the "GNU General Public License" for more details.
| Config-Manager documentation | view source | Contained in the Config-Manager distribution. |