123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- <?php
- if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__));
- require_once(LOG4PHP_DIR . '/LoggerLog.php');
- require_once(LOG4PHP_DIR . '/LoggerLevel.php');
- require_once(LOG4PHP_DIR . '/LoggerRoot.php');
- require_once(LOG4PHP_DIR . '/or/LoggerRendererMap.php');
- require_once(LOG4PHP_DIR . '/LoggerDefaultCategoryFactory.php');
- class LoggerHierarchy {
-
- var $defaultFactory;
-
-
- var $debug = false;
-
- var $ht = array();
-
-
- var $root = null;
-
-
- var $rendererMap;
-
- var $threshold;
-
-
- var $emittedNoAppenderWarning = false;
-
- var $emittedNoResourceBundleWarning = false;
-
-
- function &singleton()
- {
- static $instance;
-
- if (!isset($instance))
- $instance = new LoggerHierarchy(new LoggerRoot());
- return $instance;
- }
-
-
- function LoggerHierarchy($root)
- {
- $this->root =& $root;
-
- $this->setThreshold(LoggerLevel::getLevelAll());
- $this->root->setHierarchy($this);
- $this->rendererMap = new LoggerRendererMap();
- $this->defaultFactory = new LoggerDefaultCategoryFactory();
- }
-
-
- function addHierarchyEventListener($listener)
- {
- return;
- }
-
-
- function addRenderer($classToRender, $or)
- {
- $this->rendererMap->put($classToRender, $or);
- }
-
-
- function clear()
- {
- $this->ht = array();
- }
-
- function emitNoAppenderWarning($cat)
- {
- return;
- }
-
-
- function exists($name)
- {
- return in_array($name, array_keys($this->ht));
- }
- function fireAddAppenderEvent($logger, $appender)
- {
- return;
- }
-
-
- function &getCurrentCategories()
- {
- return $this->getCurrentLoggers();
- }
-
-
-
- function &getCurrentLoggers()
- {
- $loggers = array();
- $loggerNames = array_keys($this->ht);
- $enumLoggers = sizeof($loggerNames);
- for ($i = 0; $i < $enumLoggers; $i++) {
- $loggerName = $loggerNames[$i];
- $loggers[] =& $this->ht[$loggerName];
- }
- return $loggers;
- }
-
-
- function &getLogger($name, $factory = null)
- {
- if ($factory === null) {
- return $this->getLoggerByFactory($name, $this->defaultFactory);
- } else {
- return $this->getLoggerByFactory($name, $factory);
- }
- }
-
-
- function &getLoggerByFactory($name, $factory)
- {
- if (!isset($this->ht[$name])) {
- LoggerLog::debug("LoggerHierarchy::getLoggerByFactory():name=[$name]:factory=[".get_class($factory)."] creating a new logger...");
- $this->ht[$name] = $factory->makeNewLoggerInstance($name);
- $this->ht[$name]->setHierarchy($this);
- $nodes = explode('.', $name);
- $firstNode = array_shift($nodes);
- if ( $firstNode != $name and isset($this->ht[$firstNode])) {
- LoggerLog::debug("LoggerHierarchy::getLogger($name) parent is now [$firstNode]");
- $this->ht[$name]->parent =& $this->ht[$firstNode];
- } else {
- LoggerLog::debug("LoggerHierarchy::getLogger($name) parent is now [root]");
- $this->ht[$name]->parent =& $this->root;
- }
- if (sizeof($nodes) > 0) {
-
- foreach ($nodes as $node) {
- $parentNode = "$firstNode.$node";
- if (isset($this->ht[$parentNode]) and $parentNode != $name) {
- LoggerLog::debug("LoggerHierarchy::getLogger($name) parent is now [$parentNode]");
- $this->ht[$name]->parent =& $this->ht[$parentNode];
- }
- $firstNode .= ".$node";
- }
- }
-
-
- }
- return $this->ht[$name];
- }
-
-
- function &getRendererMap()
- {
- return $this->rendererMap;
- }
-
-
-
- function &getRootLogger()
- {
- if (!isset($this->root) or $this->root == null)
- $this->root = new LoggerRoot();
- return $this->root;
- }
-
-
- function getThreshold()
- {
- return $this->threshold;
- }
-
- function isDisabled($level)
- {
- return ($this->threshold->level > $level->level);
- }
-
-
- function overrideAsNeeded($override)
- {
- return;
- }
-
-
- function resetConfiguration()
- {
- $root =& $this->getRootLogger();
-
- $root->setLevel(LoggerLevel::getLevelDebug());
- $this->setThreshold(LoggerLevel::getLevelAll());
- $this->shutDown();
- $loggers =& $this->getCurrentLoggers();
- $enumLoggers = sizeof($loggers);
- for ($i = 0; $i < $enumLoggers; $i++) {
- $loggers[$i]->setLevel(null);
- $loggers[$i]->setAdditivity(true);
- $loggers[$i]->setResourceBundle(null);
- }
- $this->rendererMap->clear();
- }
-
-
- function setDisableOverride($override)
- {
- return;
- }
-
-
- function setRenderer($renderedClass, $renderer)
- {
- $this->rendererMap->put($renderedClass, $renderer);
- }
-
-
- function setThreshold($l)
- {
- if ($l !== null)
- $this->threshold = $l;
- }
-
-
- function shutdown()
- {
- $this->root->removeAllAppenders();
- $cats =& $this->getCurrentLoggers();
- $enumCats = sizeof($cats);
- if ($enumCats > 0) {
- for ($i = 0; $i < $enumCats; $i++) {
- $cats[$i]->removeAllAppenders();
- }
- }
- }
- }
- ?>
|