Einfaches loggen mit Firebug und dem Zend Framework

Logfiles werden in fast jeder Entwicklungsumgebung benötigt und daher finden sich für diese Aufgabe auch zahlreiche unterschiedliche Implementierungen. In der Regel werden Logfiles einfach als *.txt oder *.log Datei auf dem Server abgelegt und bei Bedarf mit einem geeignetem Editor oder direkt in der IDE geöffnet.

Seit der Version 1.6 bietet das Zend Framework jedoch bereits eine sehr komfortable Möglichkeit, die Ausgaben direkt im Firefox-Browser zu loggen. Dazu benötigen wir zunächst die Erweiterungen Firebug und FirePHP.

Da diese beiden Addons ja quasi zur Grundausstattung eines Webentwicklers gehören, werde ich auf die Funktionsweise hier auch nicht mehr näher eingehen, sondern ich gehe direkt zur Implementierung der Funktion selbst über.

Zunächst muss der eigentliche Logger intialisiert werden und das macht man am schnellsten in der bootstrap.php, denn so stehen uns die Funktionen auch in der gesamten Anwendung zur Verfügung.

/**
 * Init Firebug + FirePHP
 */
protected function _initFirebugDebugger() {
        
    $Zend_Log = new Zend_Log();
    $Zend_Writer = new Zend_Log_Writer_Firebug();
    $Zend_Log->addWriter($Zend_Writer);
		
    Zend_Registry::set('Firebug_Logger', $Zend_Log);
}

Anschließend schreibe ich mir meisten eine kleine Helper-Funktion, die für die Übergabe der jeweiligen Meldungen an den Logger zuständig ist. Ich weiß, dass ist nicht ganz OOP-Like, aber wenn es jemanden stört, dann ist es natürlich auch möglich, diese Funktion in eine statische Klassenmethode auszulagern.

/**
 * FirePHP - Logger
 * 
 * @param string 	$Message	Log-Message
 * @param string 	$Label		Message-Label
 * @param integer 	$Status		Message-Status
 */
function toFB($Message, $Label = null, $Status = Zend_Log::DEBUG) {
    
    if ($Label != null) {
        $Message = array($Label => $Message);
    }
 
    if (Zend_Registry::isRegistered('Firebug_Logger')) {
        Zend_Registry::get('Firebug_Logger')->log($Message, $Status);
    }
}

Nachdem diese beiden Schritte erledigt sind, kann der Logger bereits verwendet werden. Das folgende Listing zeigt nochmals die Nutzung innerhalb eines ActionControllers.

/**
 * indexAction
 */
public function indexAction() {
		
    toFB('My Log-Message', null);
    toFB('My Log-Message', null, Zend_Log::INFO);
    toFB('My Log-Message', null, Zend_Log::ALERT);
}

Folgende Ausgabe wird dabei im Browser erzeugt:

Aus Sicherheitsgründen sollten Sie jedoch daran denken, denn Logger beispielsweise nur dann zu aktivieren, wenn sich das System im Debug-Modus oder in einer lokalen Entwicklungsumgebung befindet, denn die Ausgaben können grundsätzlich von jedem Nutzer gelesen werden, der die entsprechenden Erweiterungen in seinem Browser installiert hat. Daher gilt hier die gleiche Regel, wie beim error_reporting:

Im produktiven Einsatz sind möglichst alle Ausgaben der Software zu deaktivieren!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.