Zeta Components - high quality PHP components

eZ Components - EventLogDatabaseTiein


The EventLogDatabaseTiein component provides an API to log events and audit trails using a database connection. See the EventLog and Database tutorials for more information about the components that EventLogDatabaseTiein interacts with.

ezcLogDatabaseWriter is the log writer that writes log messages to the database.

To write log messages to the database, the Database component is used. The table to which the log is written should already exist.

Class overview

ezcLogDatabaseWriter is the only class in EventLogDatabaseTiein:

The ezcLogDatabaseWriter class writes the log message to a database.

For more information, see the class documentation.


Writing to a database

In this example, a MySQL database is used for writing log messages. The database "app" and the table "log" should already exist. The table should at least contain the following columns: time, message, severity, source and category.

  1. <?php
  2. require_once 'tutorial_autoload.php';
  3. date_default_timezone_set"UTC" );
  4. // Get the database instance
  5. $db ezcDbInstance::get();
  6. // Get the log instance
  7. $log ezcLog::getInstance();
  8. // Create a database writer attached to the database handler and the table "log"
  9. $writer = new ezcLogDatabaseWriter$db"log" );
  10. // Specify that log messages will be written to the database
  11. $log->getMapper()->appendRule( new ezcLogFilterRule( new ezcLogFilter$writertrue ) );
  12. // Write a log entry ( message, severity, source, category )
  13. $log->log"File '/images/spacer.gif' does not exist."ezcLog::WARNING, array( "source" => "Application""category" => "Design" ) );
  14. // Write a log entry ( message, severity, source, category, file, line )
  15. $log->log"File '/images/spacer.gif' does not exist."ezcLog::WARNING, array( "source" => "Application""category" => "Design" ), array( "file" => "/index.php""line" => 123 ) );
  16. ?>

An example SQL query to create the table is as follows:

CREATE TABLE log ( category varchar(255) NOT NULL, file varchar(255), id bigint NOT NULL AUTO_INCREMENT PRIMARY KEY, line bigint, message varchar(255) NOT NULL, severity varchar(255) NOT NULL, source varchar(255) NOT NULL, time timestamp NOT NULL );

The log table will have rows similar to the following:

array(16) { ["category"]=> string(6) "Design" [0]=> string(6) "Design" ["file"]=> NULL [1]=> NULL ["id"]=> string(1) "1" [2]=> string(1) "1" ["line"]=> NULL [3]=> NULL ["message"]=> string(41) "File '/images/spacer.gif' does not exist." [4]=> string(41) "File '/images/spacer.gif' does not exist." ["severity"]=> string(7) "Warning" [5]=> string(7) "Warning" ["source"]=> string(11) "Application" [6]=> string(11) "Application" ["time"]=> string(19) "2006-11-28 14:21:32" [7]=> string(19) "2006-11-28 14:21:32" }