繁体   English   中英

Zend_Log在application.ini中

[英]Zend_Log in application.ini

有没有任何例子如何从application.ini设置zend日志的实例? 我只找到了一个记录到文件的例子,但我想登录一个SQLITE数据库表?

Zend Log资源

好问题。 我找不到从引导程序配置实例化Zend_Log_Writer_Db的方法。 writer类需要Zend_Db_Adapter对象。 它不接受字符串。

ZF项目需要进一步开发此用例。 他们甚至没有包含Db Zend_Application_Resource_Log任何单元测试。

在此之前我可以建议的最好的是你的Bootstrap类需要在_initLog()方法中自定义Log资源。

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

}

手册中 :您可以找到如何将日志文件写入数据库的示例。这是什么意思?

这应该工作 - 我将在以后完全测试(现在不在我的开发机器上)

Zend_Application_Resource_Log可以从application.ini设置Zend_Log的实例

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"  

自ZF 1.10alpha(至少)以来,以下情况属实。

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

注意:任意数组键'firebug'。 当Zend_Log工厂在资源的日志配置上进行搅拌时,示例1将作为数组传递给Zend_Log-> addWriter()(触发_constructWriterFromConfig()方法),而示例2将简单地传递一个字符串(触发异常)。

(我知道这是旧的,我使用的是Firebug记录器示例,但同样适用于所有日志编写者)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM