есть ли какой-нибудь пример, как настроить экземпляр zend-журнала из application.ini? Я только нашел пример для входа в файл, но я хочу войти в таблицу базы данных SQLITE?
Ресурс журнала Zend
Хороший вопрос. Я не могу найти способ создать экземпляр Zend_Log_Writer_Db
из конфигурации bootstrap. Класс writer требует объект 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); } } }
Здесь, в руководстве : вы можете найти пример, как записать файл журнала в базу данных. Это то, что вы имеете в виду?
Это должно сработать – я буду тестировать полностью позже (а не на моей dev-машине сейчас)
Zend_Application_Resource_Log может установить экземпляр Zend_Log из приложения.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"
Поскольку ZF 1.10alpha (по крайней мере), верно следующее.
// eg 1 - works resources.log.firebug.writerName = "Firebug" // eg 2 - fails resources.log.writerName = "Firebug"
ПРИМЕЧАНИЕ: произвольный массив «firebug». Когда фабрика Zend_Log сбрасывает конфигурацию журнала ресурса, пример 1 будет передан как массив в Zend_Log-> addWriter () (инициирует метод _constructWriterFromConfig ()), тогда как пример 2 просто передаст строку (вызывая исключение).
(Я знаю, что это старое, и я использую пример Firebug logger, но то же самое относится ко всем авторам журналов)