есть ли какой-либо пример, как установить экземпляр журнала зенда из application.ini? Я только нашел пример для входа в файл, но я хочу войти в таблицу базы данных SQLITE?
Хороший вопрос. Я не могу найти способа инстанцировать Zend_Log_Writer_Db
из конфигурационного файла bootstrap. Классу записи требуется объект Zend_Db_Adapter
. Он не принимает строку.
В проекте ZF необходимо дальнейшее развитие этого варианта использования. В нем даже нет юнит-тестов для Zend_Application_Resource_Log
, включающих Db writer.
Лучшее, что я могу предложить до этого момента, это то, что вам, классу Bootstrap, необходимо настроить ресурс журнала в методе _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);
}
}
}
Здесь в manual: вы можете найти пример, как записать лог-файл в базу данных. Вы это имеете в виду?
.Это должно сработать - я полностью протестирую позже (не на моей машине разработчика сейчас)
Zend_Application_Resource_Log может настроить экземпляр Zend_Log из 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"