/** * Returns a named logger instance logger. If it doesn't exist, one is created. * * @param string $name TPLogger name * @return TPLogger Logger instance. */ public function getLogger($name) { if (!isset($this->loggers[$name])) { $logger = new TPLogger($name); $nodes = explode('.', $name); $firstNode = array_shift($nodes); // if name is not a first node but another first node is their if ($firstNode != $name and isset($this->loggers[$firstNode])) { $logger->setParent($this->loggers[$firstNode]); } else { // if there is no father, set root logger as father $logger->setParent($this->root); } // if there are more nodes than one if (count($nodes) > 0) { // find parent node foreach ($nodes as $node) { $parentNode = "{$firstNode}.{$node}"; if (isset($this->loggers[$parentNode]) and $parentNode != $name) { $logger->setParent($this->loggers[$parentNode]); } $firstNode .= ".{$node}"; } } $this->loggers[$name] = $logger; } return $this->loggers[$name]; }