Gibt es ein Beispiel, wie man eine Instanz von zend log aus der application.ini? Ich habe nur ein Beispiel für die Protokollierung in einer Datei gefunden, aber ich möchte mich in eine SQLITE-Datenbanktabelle einloggen?Zend_Log in application.ini
Antwort
Gute Frage. Ich kann keine Möglichkeit finden, die Zend_Log_Writer_Db
von einer Bootstrap-Konfiguration instanziieren. Die Writer-Klasse benötigt ein Objekt Zend_Db_Adapter
. Es akzeptiert keine Zeichenfolge.
Das ZF-Projekt muss diesen Anwendungsfall weiter entwickeln. Sie haben nicht einmal Unit-Tests für Zend_Application_Resource_Log
, die einen Db-Writer enthalten.
Das Beste, was ich bis dahin vorschlagen kann ist, dass Sie Bootstrap-Klasse die Log-Ressource in einer _initLog()
Methode anpassen muss.
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initDb()
{
if ($this->hasPluginResource("db")) {
$r = $this->getPluginResource("db");
$db = $r->getDbAdapter();
Zend_Registry::set("db", $db);
}
}
protected function _initLog()
{
if ($this->hasPluginResource("log")) {
$r = $this->getPluginResource("log");
$log = $r->getLog();
$db = Zend_Registry::get("db");
$writer = new Zend_Log_Writer($db, "log", ...columnMap...);
$log->addWriter($writer);
Zend_Registry::set("log", $log);
}
}
}
Danke Bill! Eine Änderung: $ log-> addWriter ($ writer); – steve
Hier im manual: Sie können ein Beispiel finden, wie Sie Ihre Log-Datei in die database.Is zu schreiben, was du meinst?
Hallo, nein. Ich möchte die Log-Ressource zu meiner application.ini hinzufügen. Wie DB Adapater und andere Sachen. In ZF 1.10 ist diese neue Ressource verfügbar. – opHASnoNAME
Diese Arbeit sollte - ich werde später vollständig testen (an meinem dev Maschine nicht jetzt)
Zend_Application_Resource_Log können Setup eine Instanz eines Zend_Log von application.ini
resources.log.writerName = "db"
resources.log.writerParams.db.adapter = "PDO_SQLITE"
resources.log.writerParams.db.dbname = APPLICATION_PATH "/../db/logdb.sqlite"
resources.log.writerParams.db.table = "log"
Hallo, funktioniert nicht (- "Writer muss eine Instanz von Zend_Log_Writer_Abstract sein oder Sie sollten ein Konfigurationsarray übergeben" $ bootstrap = $ this-> getInvokeArg ('bootstrap'); $ log = $ bootstrap-> getResource ('log'); $ log-> info ('x'); – opHASnoNAME
Seit ZF 1.10alpha (mindestens) ist das Folgende richtig gewesen.
// e.g. 1 - works
resources.log.firebug.writerName = "Firebug"
// e.g. 2 - fails
resources.log.writerName = "Firebug"
HINWEIS: Der willkürliche Array-Schlüssel 'firebug'. Wenn die Zend_Log-Factory die Log-Konfiguration der Ressource durchläuft, wird Beispiel 1 als Array an Zend_Log-> addWriter() übergeben (löst die _constructWriterFromConfig() -Methode aus), während Beispiel 2 einfach eine Zeichenkette weitergibt (eine Ausnahme auslöst).
(Ich weiß, das alt ist, und ich bin mit einem Firebug Logger Beispiel, aber das gleiche gilt für alle Log-Autoren)
Iam abount ZF 1.10alpha Mitteilung spricht .. – opHASnoNAME