2009-12-28 4 views

Respuesta

13

Buena pregunta. No puedo encontrar una forma de instanciar el Zend_Log_Writer_Db desde una configuración de arranque. La clase de escritor requiere un objeto Zend_Db_Adapter. No acepta una cadena.

El proyecto ZF necesita desarrollar este caso de uso aún más. Ni siquiera tienen pruebas de unidad para Zend_Application_Resource_Log que incluyen una grabadora de Db.

Lo mejor que puedo sugerir hasta ahora es que su clase Bootstrap necesita personalizar el recurso de registro en un método _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); 
    } 
    } 

} 
+0

¡Gracias Bill! Un cambio: $ log-> addWriter ($ writer); – steve

1

Aquí en el manual: se puede encontrar un ejemplo de cómo escribir el archivo de registro en los database.Is que lo que quiere decir?

+0

Hola, no. Quiero agregar el recurso de registro a mi application.ini. Como DB Adapater y otras cosas. En ZF 1.10, este nuevo recurso está disponible. – opHASnoNAME

1

Esto debería funcionar - Voy a probar plenamente más adelante (no en mi máquina dev ahora)

Zend_Application_Resource_Log puede configurar una instancia de 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" 
+0

Hola, no trabajando (-: "escritor debe ser una instancia de Zend_Log_Writer_Abstract o si debe pasar un arreglo de configuración" $ arranque = $ this-> getInvokeArg ('arranque'); $ log = $ bootstrap-> getResource ('log'); $ log-> info ('x'); – opHASnoNAME

1

Desde ZF 1.10alpha (al menos), lo siguiente ha sido cierto.

// e.g. 1 - works 
resources.log.firebug.writerName = "Firebug" 
// e.g. 2 - fails 
resources.log.writerName = "Firebug" 

NOTA: la clave de matriz arbitraria 'firebug'. Cuando la fábrica Zend_Log revuelve sobre la configuración de registro del recurso, el ejemplo 1 se pasará como una matriz a Zend_Log-> addWriter() (activando el método _constructWriterFromConfig()), mientras que el ejemplo 2 simplemente pasará una cadena (desencadenando una excepción).

(sé que esto es viejo, y estoy usando un registrador de ejemplo Firebug, pero lo mismo se aplica a todos los escritores de registro)

Cuestiones relacionadas