Writer Ein Writer ist ein Objekt das von Zend_Log_Writer_Abstract abstammt. Die Aufgabe eines Writer's ist es Log Daten in ein Speicher-Backend aufzunehmen. In Streams schreiben Zend_Log_Writer_Stream sendet Log Daten in einen PHP Stream. Um Log Daten in den PHP Ausgabebuffer zu schreiben, muß die URL php://output verwendet werden. Alternativ können Log Daten direkt an einen Stream wie z.B. STDERR (php://stderr) gesendet werden. info('Informational message'); ]]> Um Daten in eine Datei zu schreiben, muß eine der Dateisystem URLs verwendet werden: info('Informative Nachricht'); ]]> Standardmäßig wird der Stream im Anhänge-Modus geöffnet ("a"). Um Ihn in einem anderen Modus zu öffnen, akzeptiert der Zend_Log_Writer_Stream Konstruktor einen optionalen zweiten Parameter für den Modus. Der Konstruktor von Zend_Log_Writer_Stream akzeptiert auch eine existierende Stream Ressource: info('Informative Nachricht'); ]]> Der Modus kann für existierende Stream Ressourcen nicht definiert werden. Wenn das gemacht versucht wird, wird eine Zend_Log_Exception geworfen. In Datenbanken schreiben Zend_Log_Writer_Db schreibt Log Informationen in eine Datenbank Tabelle wobei Zend_Db verwendet wird. Der Konstrukor von Zend_Log_Writer_Db benötigt eine Zend_Db_Adapter Instanz, einen Tabellennamen, und ein Abbild der Datenbankspalten zu den Elementen der Eventdaten: '127.0.0.1', 'username' => 'malory', 'password' => '******', 'dbname' => 'camelot'); $db = Zend_Db::factory('PDO_MYSQL', $params); $columnMapping = array('lvl' => 'priority', 'msg' => 'message'); $writer = new Zend_Log_Writer_Db($db, 'log_table_name', $columnMapping); $logger = new Zend_Log($writer); $logger->info('Informative Nachricht'); ]]> Das obige Beispiel schreibt eine einzelne Zeile von Log Daten in einem Datenbanktabelle welche 'log_table_name' Tabelle benannt wird. Die Datenbankspalte welche 'lvl' benannt ist empfängt die Nummer der Priorität und die Spalte welche 'msg' benannt ist empfängt die Log Nachricht. Einen Writer abstumpfen Zend_Log_Writer_Null ist ein Stumpf der keine Log Daten irgendwohin schreibt. Er ist nützlich um die Protokollierung auszuschalten oder während Tests abzustumpfen: info('Informative Nachricht'); ]]> Mit der Attrappe testen Zend_Log_Writer_Mock ist ein sehr einfacher Writer der die rohen Daten die er empfängt aufnimmt und in einem Array als öffentliche Eigenschaft zur Verfügung stellt. info('Informative Nachricht'); var_dump($mock->events[0]); // Array // ( // [timestamp] => 2007-04-06T07:16:37-07:00 // [message] => Informative Nachricht // [priority] => 6 // [priorityName] => INFO // ) ]]> Um die Events die von der Attrappe protokolliert wurden zu entfernen, muß einfach $mock->events = array() gesetzt werden. Gemischte Writer Es gibt kein gemischtes Writer Objekt. Trotzdem kann eine Log Instanz in jede beliebige Anzahl von Writern schreiben. Um das zu tun, muß die addWriter() Methode verwendet werden: addWriter($writer1); $logger->addWriter($writer2); // Geht zu beiden Writern $logger->info('Informative Nachricht'); ]]>