_db = $db; $this->_table = $table; $this->_columnMap = $columnMap; } /** * Create a new instance of Zend_Log_Writer_Db * * @param array|Zend_Config $config * @return Zend_Log_Writer_Db * @throws Zend_Log_Exception */ static public function factory($config) { $config = self::_parseConfig($config); $config = array_merge(array( 'db' => null, 'table' => null, 'columnMap' => null, ), $config); if (isset($config['columnmap'])) { $config['columnMap'] = $config['columnmap']; } return new self( $config['db'], $config['table'], $config['columnMap'] ); } /** * Formatting is not possible on this writer */ public function setFormatter(Zend_Log_Formatter_Interface $formatter) { #require_once 'Zend/Log/Exception.php'; throw new Zend_Log_Exception(get_class($this) . ' does not support formatting'); } /** * Remove reference to database adapter * * @return void */ public function shutdown() { $this->_db = null; } /** * Write a message to the log. * * @param array $event event data * @return void */ protected function _write($event) { if ($this->_db === null) { #require_once 'Zend/Log/Exception.php'; throw new Zend_Log_Exception('Database adapter is null'); } if ($this->_columnMap === null) { $dataToInsert = $event; } else { $dataToInsert = array(); foreach ($this->_columnMap as $columnName => $fieldKey) { $dataToInsert[$columnName] = $event[$fieldKey]; } } $this->_db->insert($this->_table, $dataToInsert); } }