1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | <?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); } } |