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 testGetLayoutExists() { $hierarchy = new LoggerHierarchy(); $layout = new LayoutSimple(); $hierarchy->setLayout('simple', $layout); $this->assertSame($layout, $hierarchy->getLayout('simple')); $this->assertSame(['simple' => $layout], $hierarchy->getLayoutMap()); }
/** * Reopen log appender stream, what have support * Usable in forks, SIGHUP handlers etc. */ public static function reopen() { if (!self::$isConfigured) { static::configure(); } self::$hierarchy->reopen(); }
public function getLayout($name) { try { return parent::getLayout($name); } catch (\Mougrim\Logger\LoggerConfigurationException $exception) { throw new LoggerConfigurationException($exception->getMessage(), $exception->getCode(), $exception); } }
/** * @param LoggerHierarchy $hierarchy * @param $config * * @return AppenderAbstract * * @throws LoggerException */ private function createAppender(LoggerHierarchy $hierarchy, $config) { if (isset($config['layout'])) { if (is_string($config['layout'])) { $config['layout'] = $hierarchy->getLayout($config['layout']); } elseif (is_array($config['layout'])) { $config['layout'] = $this->createLayout($config['layout']); } else { LoggerPolicy::processConfigurationError('Invalid logger layout description'); unset($config['layout']); } } /** @noinspection PhpIncompatibleReturnTypeInspection */ return $this->createObject($config); }