Search code examples
phpzend-frameworkloggingzend-application

Zend_Log in application.ini


is there any example how to setup an instance of zend log from application.ini? I have only found an example for logging to an file, but i want to log into an SQLITE database table?

Zend Log resource


Solution

  • Good question. I can't find a way to instantiate the Zend_Log_Writer_Db from a bootstrap config. The writer class requires a Zend_Db_Adapter object. It doesn't accept a string.

    The ZF project needs to develop this use case further. They don't even have any unit tests for Zend_Application_Resource_Log that include a Db writer.

    The best I can suggest until then is that you Bootstrap class needs to customize the Log resource in an _initLog() method.

    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);
        }
      }
    
    }