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?
-
Iam speaking abount ZF 1.10alpha release.. – opHASnoNAME Jan 04 '10 at 12:57
4 Answers
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);
}
}
}

- 538,548
- 86
- 673
- 828
Here in the manual: you can find an example how to write your log file into the database.Is that what you mean?

- 10,794
- 27
- 85
- 127
-
Hi, no. I want to add the Log Resource to my application.ini. Like DB Adapater and other stuff. In ZF 1.10 is this new resource available. – opHASnoNAME Jan 06 '10 at 07:53
This should work - I will test fully later (not at my dev machine now)
Zend_Application_Resource_Log can setup an instance of a Zend_Log from 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"

- 2,465
- 18
- 20
-
Hi, not working (-: "Writer must be an instance of Zend_Log_Writer_Abstract or you should pass a configuration array" $bootstrap = $this->getInvokeArg('bootstrap'); $log = $bootstrap->getResource('log'); $log->info('x'); – opHASnoNAME Jan 09 '10 at 07:58
Since ZF 1.10alpha (at least), the following has been true.
// e.g. 1 - works
resources.log.firebug.writerName = "Firebug"
// e.g. 2 - fails
resources.log.writerName = "Firebug"
NOTE: the arbitrary array key 'firebug'. When the Zend_Log factory churns over the resource's log config, example 1 will be passed as an array to Zend_Log->addWriter() (triggering the _constructWriterFromConfig() method), whilst example 2 will simply pass a string (triggering an exception).
(I know this is old, and I'm using a Firebug logger example, but the same applies to all log writers)

- 2,238
- 1
- 21
- 16