Y at-il un exemple de configuration d'une instance de zend log à partir de application.ini? J'ai seulement trouvé un exemple pour se connecter à un fichier, mais je veux me connecter à une table de base de données SQLITE?Zend_Log dans application.ini
Répondre
Bonne question. Je ne peux pas trouver un moyen d'instancier le Zend_Log_Writer_Db
à partir d'une configuration bootstrap. La classe writer requiert un objet Zend_Db_Adapter
. Il n'accepte pas de chaîne.
Le projet ZF doit développer davantage ce cas d'utilisation. Ils n'ont même pas de tests unitaires pour Zend_Application_Resource_Log
qui incluent un écrivain Db. Le meilleur que je puisse suggérer jusque-là est que votre classe Bootstrap doit personnaliser la ressource de journal dans une méthode _initLog()
.
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);
}
}
}
Merci Bill! Un changement: $ log-> addWriter ($ writer); – steve
Ici, dans le manual: vous pouvez trouver un exemple comment écrire votre fichier journal dans les database.Is que ce que vous voulez dire?
Salut, non. Je veux ajouter la ressource de journal à mon application.ini. Comme DB Adapater et d'autres choses. En ZF 1.10 est cette nouvelle ressource disponible. – opHASnoNAME
Cela devrait fonctionner - je vais tester pleinement plus tard (pas ma machine dev maintenant)
Zend_Application_Resource_Log peut de configurer une instance d'un Zend_Log de 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"
Salut, ne fonctionne pas (-: "Writer doit être une instance de Zend_Log_Writer_Abstract ou vous devriez passer un tableau de configuration" bootstrap $ = $ this-> getInvokeArg ('bootstrap'); $ log = $ bootstrap-> getResource ('log'); $ log-> info ('x'); – opHASnoNAME
Depuis ZF 1.10alpha (au moins), ce qui suit a été vrai.
// e.g. 1 - works
resources.log.firebug.writerName = "Firebug"
// e.g. 2 - fails
resources.log.writerName = "Firebug"
REMARQUE: la clé de tableau arbitraire 'firebug'. Lorsque l'usine Zend_Log résout la configuration du journal de la ressource, l'exemple 1 sera passé en tableau à Zend_Log-> addWriter() (en déclenchant la méthode _constructWriterFromConfig()), alors que l'exemple 2 passera simplement une chaîne (en déclenchant une exception).
(je sais que c'est vieux, et je suis sur un exemple de l'enregistreur Firebug, mais le même pour tous les écrivains du journal)
Iam parlant abount ZF 1.10alpha version .. – opHASnoNAME