summaryrefslogtreecommitdiff
path: root/framework/Log/EventLog/writers/writer_database.php
diff options
context:
space:
mode:
authorxue <>2006-01-08 18:13:02 +0000
committerxue <>2006-01-08 18:13:02 +0000
commit09596d92b2eea0f70c98cc5abca6f5dbd4629802 (patch)
tree3e1c656d18ee46510bd76033e7b36ca2bd4dc05d /framework/Log/EventLog/writers/writer_database.php
parent4a2c7c4e9ac75c1420e95624fb9ee34ab178c52f (diff)
Completed TLogger, TLogRouter, TFileLogRoute, TEmailLogRoute
Diffstat (limited to 'framework/Log/EventLog/writers/writer_database.php')
-rw-r--r--framework/Log/EventLog/writers/writer_database.php216
1 files changed, 0 insertions, 216 deletions
diff --git a/framework/Log/EventLog/writers/writer_database.php b/framework/Log/EventLog/writers/writer_database.php
deleted file mode 100644
index 6908a770..00000000
--- a/framework/Log/EventLog/writers/writer_database.php
+++ /dev/null
@@ -1,216 +0,0 @@
-<?php
-/**
- * File containing the ezcLogWriterDatabase class.
- *
- * @package EventLog
- * @version //autogentag//
- * @copyright Copyright (C) 2005, 2006 eZ systems as. All rights reserved.
- * @license http://ez.no/licenses/new_bsd New BSD License
- */
-
-/**
- * Writes log messages to the database.
- *
- * @package EventLog
- * @version //autogentag//
- */
-class ezcLogWriterDatabase implements ezcLogWriter
-{
- private $db = null;
-
- private $properties = array();
- private $defaultColumns = array();
- private $additionalColumns = array();
-
- private $map;
- private $defaultTable = false;
-
- /**
- * Construct a new database log-writer.
- *
- * You can set the default table to write to with the $defaultTable parameter.
- * If $databaseInstance is given, that instance will be used for writing. If it
- * is ommitted the default database instance will be retrieved.
- *
- * This constructor is a tie-in.
- *
- * @param string $defaultTable
- * @param ezcDbHandler $databaseInstance
- *
- */
- public function __construct( ezcDbHandler $databaseInstance, $defaultTable = false )
- {
- $this->db = $databaseInstance;
-
- $this->map = new ezcLogMap();
- $this->defaultTable = $defaultTable;
-
- $this->message = "message";
- $this->datetime = "time";
- $this->severity = "severity";
- $this->source = "source";
- $this->category = "category";
- }
-
- /**
- * Sets the property $name to $value.
- *
- * @throws ezcBasePropertyNotFoundException if the property does not exist.
- * @param string $name
- * @param mixed $value
- * @return void
- */
- public function __set( $name, $value )
- {
- switch ( $name )
- {
- case 'table': $this->properties['table'] = $value; break;
- case 'message':
- case 'datetime':
- case 'severity':
- case 'source':
- case 'category': $this->defaultColumns[ $name ] = $value; break;
- default: $this->additionalColumns[ $name ] = $value; break;
- }
- }
-
- /**
- * Returns the property $name.
- *
- * @throws ezcBasePropertyNotFoundException if the property does not exist.
- * @param string $name
- * @return mixed
- */
- public function __get( $name )
- {
- switch ( $name )
- {
- case 'table': return $this->properties['table']; break;
- case 'message':
- case 'datetime':
- case 'severity':
- case 'source':
- case 'category': return $this->defaultColumns[ $name ]; break;
-
- default: return $this->additionalColumns[ $name ]; break;
- }
- }
-
- /**
- * Writes the message $message to the log.
- *
- * The writer can use the severity, source, and category to filter the
- * incoming messages and determine the location where the messages should
- * be written.
- *
- * $optional may contain extra information that can be added to the log. For example:
- * line numbers, file names, usernames, etc.
- *
- * @throws ezcLogWriterException when the log writer was unable to write
- * the log message.
- * @param string $message
- * @param int $severity
- * ezcLog:: DEBUG, SUCCES_AUDIT, FAILED_AUDIT, INFO, NOTICE, WARNING, ERROR or FATAL.
- *
- * $param string $source
- * @param string $category
- * @param array(string=>string) $optional
- * @return void
- */
- public function writeLogMessage( $message, $severity, $source, $category, $optional = array() )
- {
- $severityName = ezcLog::translateSeverityName( $severity );
-
- $colStr = "";
- $valStr = "";
-
- if ( is_array( $optional ) )
- {
- foreach ( $optional as $key => $val )
- {
- $colStr .= ", " . ( isset( $this->additionalColumns[$key] ) ? $this->additionalColumns[$key] : $key );
- $valStr .= ", " . $this->db->quote( $val );
- }
- }
-
- $tables = $this->map->get( $severity, $source, $category );
-
- $query = $this->db->createSelectQuery();
- if ( count( $tables ) > 0)
- {
- foreach ( $tables as $t )
- {
- try
- {
- $this->db->exec( "INSERT INTO `{$t}` ( {$this->message}, {$this->severity}, {$this->source}, {$this->category}, {$this->datetime} $colStr ) ".
- "VALUES( ".$this->db->quote( $message ).", ".$this->db->quote( $severityName ).", ".$this->db->quote( $source ).", ".
- $this->db->quote( $category ).", ".$query->expr->now()." $valStr )" );
- }
- catch ( PDOException $e )
- {
- throw new ezcLogWriterException( "SQL query failed in ezcLogWriterDatabase.\n". $e->getMessage() );
- }
- }
- }
- else
- {
- if ( $this->defaultTable !== false )
- {
- try
- {
- $this->db->exec( "INSERT INTO `{$this->defaultTable}` ( {$this->message}, {$this->severity}, {$this->source}, {$this->category}, {$this->datetime} $colStr ) ".
- "VALUES( ".$this->db->quote( $message ).", ".$this->db->quote( $severityName ).", ".$this->db->quote( $source ).", ".
- $this->db->quote( $category ).", ".$query->expr->now()." $valStr )" );
- }
- catch ( PDOException $e )
- {
- throw new ezcLogWriterException( "SQL query failed in ezcLogWriterDatabase.\n". $e->getMessage() );
- }
- }
- }
- }
-
- /**
- * Returns an array that describes the coupling between the logMessage
- * information and the columns in the database.
- *
- * @return array(string=>string)
- */
- public function getColumnTranslations()
- {
- return array_merge( $this->defaultColumns, $this->additionalColumns );
- }
-
-
- /**
- * Maps the table $tableName to the messages specified by the {@link ezcLogFilter} $logFilter.
- *
- * Log messages that matches with the filter are written to the table $tableName.
- * This method works the same as {@link ezclog::map()}.
- *
- * @param ezcLogFilter $logFilter
- * @param string $tableName
- * @return void
- */
- public function map( ezcLogFilter $logFilter, $tableName )
- {
- $this->map->map( $logFilter->severity, $logFilter->source, $logFilter->category, $tableName );
- }
-
- /**
- * Unmaps the table $tableName from the messages specified by the {@link ezcLogFilter} $logFilter.
- *
- * Log messages that matches with the filter are no longer written to the table $tableName.
- * This method works the same as {@link ezclog::unmap()}.
- *
- * @param ezcLogFilter $logFilter
- * @param string $fileName
- * @return void
- */
- public function unmap( ezcLogFilter $logFilter, $tableName )
- {
- $this->map->unmap( $logFilter->severity, $logFilter->source, $logFilter->category, $tableName );
- }
-}
-
-?>