public function testReopen()
 {
     $firstLog = '/tmp/first_log';
     $firstLogTmp = '/tmp/first_log_tmp';
     $secondLog = '/tmp/second_log';
     $secondLogTmp = '/tmp/second_log_tmp';
     if (is_file($firstLog)) {
         unlink($firstLog);
     }
     if (is_file($firstLogTmp)) {
         unlink($firstLogTmp);
     }
     if (is_file($secondLog)) {
         unlink($secondLog);
     }
     if (is_file($secondLogTmp)) {
         unlink($secondLogTmp);
     }
     $hierarchy = new LoggerHierarchy();
     $hierarchy->setAppender('first', $firstAppender = new AppenderStream($firstLog));
     $hierarchy->setAppender('second', $secondAppender = new AppenderStream($secondLog));
     $rootLogger = $hierarchy->getRootLogger();
     $rootLogger->addAppender($firstAppender);
     $rootLogger->addAppender($secondAppender);
     rename($firstLog, $firstLogTmp);
     rename($secondLog, $secondLog);
     $hierarchy->reopen();
     $rootLogger->info($expected = uniqid());
     $this->assertSame($expected, file_get_contents($firstLog));
     $this->assertSame($expected, file_get_contents($secondLog));
 }
 public function testGetAppenderExists()
 {
     $hierarchy = new LoggerHierarchy();
     $appender = new AppenderStd();
     $hierarchy->setAppender('appender', $appender);
     $this->assertSame($appender, $hierarchy->getAppender('appender'));
     $this->assertSame(['appender' => $appender], $hierarchy->getAppenderMap());
 }
 public function configure(LoggerHierarchy $hierarchy, array $config)
 {
     if (isset($config[static::LOGGER_POLICY]['ioError'])) {
         LoggerPolicy::setIoErrorPolicy($config[static::LOGGER_POLICY]['ioError']);
     }
     if (isset($config[static::LOGGER_POLICY]['configurationError'])) {
         LoggerPolicy::setConfigurationErrorPolicy($config[static::LOGGER_POLICY]['configurationError']);
     }
     if (isset($config[static::LOGGER_RENDERER])) {
         if (isset($config[static::LOGGER_RENDERER]['nullMessage'])) {
             LoggerRender::$nullMessage = (string) $config[static::LOGGER_RENDERER]['nullMessage'];
         }
         if (isset($config[static::LOGGER_RENDERER]['trueMessage'])) {
             LoggerRender::$trueMessage = (string) $config[static::LOGGER_RENDERER]['trueMessage'];
         }
         if (isset($config[static::LOGGER_RENDERER]['falseMessage'])) {
             LoggerRender::$falseMessage = (string) $config[static::LOGGER_RENDERER]['falseMessage'];
         }
     }
     if (isset($config[static::LOGGER_LAYOUTS])) {
         foreach ($config[static::LOGGER_LAYOUTS] as $layoutName => $layoutConfig) {
             $hierarchy->setLayout($layoutName, $this->createLayout($layoutConfig));
         }
     }
     if (isset($config[static::LOGGER_APPENDERS])) {
         foreach ($config[static::LOGGER_APPENDERS] as $appenderName => $appenderConfig) {
             $hierarchy->setAppender($appenderName, $this->createAppender($hierarchy, $appenderConfig));
         }
     }
     if (isset($config[static::LOGGER_LOGGERS])) {
         foreach ($config[static::LOGGER_LOGGERS] as $loggerName => $loggerConfig) {
             $logger = $hierarchy->getLogger($loggerName);
             $this->createLogger($logger, $hierarchy, $loggerConfig);
         }
     }
     if (isset($config[static::LOGGER_ROOT])) {
         $logger = $hierarchy->getRootLogger();
         $this->createLogger($logger, $hierarchy, $config[static::LOGGER_ROOT]);
     }
 }