/**
  * 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];
 }