|
<?php |
|
/** |
|
* $Header$ |
|
* $Horde: horde/lib/Log/observer.php,v 1.5 2000/06/28 21:36:13 jon Exp $ |
|
* |
|
* @version $Revision: 211953 $ |
|
* @package Log |
|
*/ |
|
|
|
/** |
|
* The Log_observer:: class implements the Observer end of a Subject-Observer |
|
* pattern for watching log activity and taking actions on exceptional events. |
|
* |
|
* @author Chuck Hagenbuch <chuck@horde.org> |
|
* @since Horde 1.3 |
|
* @since Log 1.0 |
|
* @package Log |
|
* |
|
* @example observer_mail.php An example Log_observer implementation. |
|
*/ |
|
class Log_observer |
|
{ |
|
/** |
|
* Instance-specific unique identification number. |
|
* |
|
* @var integer |
|
* @access private |
|
*/ |
|
var $_id = 0; |
|
|
|
/** |
|
* The minimum priority level of message that we want to hear about. |
|
* PEAR_LOG_EMERG is the highest priority, so we will only hear messages |
|
* with an integer priority value less than or equal to ours. It defaults |
|
* to PEAR_LOG_INFO, which listens to everything except PEAR_LOG_DEBUG. |
|
* |
|
* @var string |
|
* @access private |
|
*/ |
|
var $_priority = PEAR_LOG_INFO; |
|
|
|
/** |
|
* Creates a new basic Log_observer instance. |
|
* |
|
* @param integer $priority The highest priority at which to receive |
|
* log event notifications. |
|
* |
|
* @access public |
|
*/ |
|
function Log_observer($priority = PEAR_LOG_INFO) |
|
{ |
|
$this->_id = md5(microtime()); |
|
$this->_priority = $priority; |
|
} |
|
|
|
/** |
|
* Attempts to return a new concrete Log_observer instance of the requested |
|
* type. |
|
* |
|
* @param string $type The type of concreate Log_observer subclass |
|
* to return. |
|
* @param integer $priority The highest priority at which to receive |
|
* log event notifications. |
|
* @param array $conf Optional associative array of additional |
|
* configuration values. |
|
* |
|
* @return object The newly created concrete Log_observer |
|
* instance, or null on an error. |
|
*/ |
|
function &factory($type, $priority = PEAR_LOG_INFO, $conf = array()) |
|
{ |
|
$type = strtolower($type); |
|
$class = 'Log_observer_' . $type; |
|
|
|
/* |
|
* If the desired class already exists (because the caller has supplied |
|
* it from some custom location), simply instantiate and return a new |
|
* instance. |
|
*/ |
|
if (class_exists($class)) { |
|
$object = &new $class($priority, $conf); |
|
return $object; |
|
} |
|
|
|
/* Support both the new-style and old-style file naming conventions. */ |
|
$newstyle = true; |
|
$classfile = dirname(__FILE__) . '/observer_' . $type . '.php'; |
|
|
|
if (!file_exists($classfile)) { |
|
$classfile = 'Log/' . $type . '.php'; |
|
$newstyle = false; |
|
} |
|
|
|
/* |
|
* Attempt to include our version of the named class, but don't treat |
|
* a failure as fatal. The caller may have already included their own |
|
* version of the named class. |
|
*/ |
|
@include_once $classfile; |
|
|
|
/* If the class exists, return a new instance of it. */ |
|
if (class_exists($class)) { |
|
/* Support both new-style and old-style construction. */ |
|
if ($newstyle) { |
|
$object = &new $class($priority, $conf); |
|
} else { |
|
$object = &new $class($priority); |
|
} |
|
return $object; |
|
} |
|
|
|
$null = null; |
|
return $null; |
|
} |
|
|
|
/** |
|
* This is a stub method to make sure that Log_Observer classes do |
|
* something when they are notified of a message. The default behavior |
|
* is to just print the message, which is obviously not desireable in |
|
* practically any situation - which is why you need to override this |
|
* method. :) |
|
* |
|
* @param array $event A hash describing the log event. |
|
*/ |
|
function notify($event) |
|
{ |
|
print_r($event); |
|
} |
|
} |
|
|