public function formatMessage(MougrimLogger $logger, $level, $message, \Exception $throwable = null) { $prefix = ''; $mdc = LoggerMDC::getMap(); if ($this->logUserInfo) { foreach (['ip', 'userId', 'sessionId'] as $key) { $context = isset($mdc[$key]) ? $mdc[$key] : null; $context = LoggerRender::render($context); $prefix .= '[' . $context . ']'; unset($mdc[$key]); } } $level = MougrimLogger::getLevelName($level); $formatted = date('Y-m-d H:i:s') . ' ' . $prefix . '[' . $level . '][' . $logger->getName() . ']'; $ndcString = ''; if ($ndcStack = LoggerNDC::getStack()) { $ndcString = implode(' ', $ndcStack); } $formatted .= '[' . $ndcString . ']'; $mdcString = ''; foreach ($mdc as $key => $context) { $mdcString .= $key . '=' . $context . ' '; } $formatted .= '[' . trim($mdcString) . ']'; $formatted .= ' ' . LoggerRender::render($message); if ($throwable) { $formatted .= ' ' . LoggerRender::render($throwable); } return $formatted . PHP_EOL; }
private function createLogger(Logger $logger, LoggerHierarchy $hierarchy, array $config) { if (isset($config['appenders'])) { foreach ($config['appenders'] as $appenderConfig) { if (is_string($appenderConfig)) { $appender = $hierarchy->getAppender($appenderConfig); } elseif (is_array($appenderConfig)) { $appender = $this->createAppender($hierarchy, $appenderConfig); } else { LoggerPolicy::processConfigurationError('Appender invalid config'); continue; } $logger->addAppender($appender); } if (isset($config['addictive'])) { $logger->setAddictive($config['addictive']); } if (isset($config['maxLevel'])) { $logger->setMaxLevel($config['maxLevel']); } if (isset($config['minLevel'])) { $logger->setMinLevel($config['minLevel']); } } }
public function process(Task $task) { Logger::getLogger('queue')->info("begin id:{$task->getId()} (data:{$this->testField})"); usleep(mt_rand(200000, 500000)); // todo remove from queue, or unlock Logger::getLogger('queue')->info("end id:{$task->getId()} (data:{$this->testField})"); }
public function testTest() { Logger::configure(['appenders' => ['stream' => ['class' => AppenderStream::class, 'stream' => '/dev/null']], 'root' => ['appenders' => ['stream']]]); $logger = Logger::getLogger('test'); $start = microtime(1); for ($i = 1000; --$i;) { $logger->info('test'); } $end = microtime(1); $this->assertLessThan(1.0, $end - $start, 'logger > root > stream'); $logger = Logger::getRootLogger(); $start = microtime(1); for ($i = 1000; --$i;) { $logger->info('test'); } $end = microtime(1); $this->assertLessThan(1.0, $end - $start, 'root > stream'); $appenders = Logger::getRootLogger()->getAppenders(); $appender = $appenders[0]; $start = microtime(1); for ($i = 1000; --$i;) { $appender->append($logger, Logger::INFO, 'test', null); } $end = microtime(1); $this->assertLessThan(1.0, $end - $start, 'stream'); }
public function formatMessage(Logger $logger, $level, $message, \Exception $throwable = null) { $formatted = $logger->getName() . ' [' . Logger::getLevelName($level) . '] '; if ($ndc = LoggerNDC::getStack()) { $formatted .= implode(' ', $ndc) . ' '; } if ($mdc = LoggerMDC::getMap()) { foreach ($mdc as $key => $context) { $formatted .= $key . '=' . $context . ' '; } } $formatted .= '- ' . LoggerRender::render($message); if ($throwable) { $formatted .= ' ' . LoggerRender::render($throwable); } return $formatted . PHP_EOL; }
public function unlockTasks(array $tasks = null) { $logger = Logger::getLogger('file-queue'); $logger->info('unlock tasks'); if ($tasks === null) { $tasks = $this->tasks; } $statusFileObject = $this->getStatusFileObject(); if (!$statusFileObject->flock(LOCK_EX)) { throw new \RuntimeException("Can't get lock for status file {$this->getStatusFile()}"); } $tasksFileObject = new \SplFileObject($this->getTasksFile(), 'a'); foreach ($tasks as $task) { if ($tasksFileObject->fputcsv([$task->getId(), $task->getData()]) === false) { throw new \RuntimeException("Can't write task to tasks file {$this->getTasksFile()}"); } } if (!$statusFileObject->flock(LOCK_UN)) { $logger->warn("Can't release lock"); } }
public function render(Logger $logger, $level, $message, \Exception $throwable = null) { return $this->format(Logger::getLevelName($level)); }
} /* @noinspection PhpIncludeInspection */ $config = (require $params['config']); if (!$config) { echo "Config should be not empty\n"; exit(1); } if (!is_array($config)) { echo "Config should be array\n"; exit(1); } $loggerConfig = []; if (isset($config['loggerConfig']) && is_array($config['loggerConfig'])) { $loggerConfig = $config['loggerConfig']; } Logger::configure($loggerConfig); $processor = new Processor(); $signalHandler = new SignalHandler(); $processor->setSignalHandler($signalHandler); if (!isset($config['mainConfig'])) { echo "You should specify mainConfig key in config. See documentation for more information.\n"; exit(1); } $processor->setMainConfig($config['mainConfig']); if (!isset($config['processorConfig'])) { echo "You should specify processorConfig key in config. See documentation.\n"; exit(1); } if (!isset($config['processorConfig']['configReader'])) { echo "You should specify processorConfig.configReader key in config. See documentation.\n"; exit(1);
private function fork() { for ($i = 0; $i < 3; ++$i) { if (isset($pid)) { usleep(1000000); } $pid = pcntl_fork(); if ($pid >= 0) { return $pid; } $error_number = pcntl_get_last_error(); $error = "[{$error_number}] " . pcntl_strerror($error_number); Logger::getLogger('queue')->warn("Can`t fork, retryNumber={$i}, pid: '" . var_export($pid, true) . "', error: '{$error}'", new Exception()); } throw new RuntimeException('Can`t fork'); }
protected function getMougrimLogger($category) { return MougrimLogger::getLogger($category); }
public function testMaxLevel() { $logger = new Logger('root'); $appender = new AppenderTest(); $logger->addAppender($appender); $logger->log(Logger::INFO, 1); $this->assertSame([[Logger::INFO, 1]], $appender->logs); $logger->setMaxLevel(Logger::INFO); $logger->log(Logger::INFO, 2); $logger->log(Logger::FATAL, 3); $logger->log(Logger::DEBUG, 4); $this->assertSame([[Logger::INFO, 1], [Logger::INFO, 2], [Logger::DEBUG, 4]], $appender->logs); return; }
protected function beforeRun() { $signalHandler = $this->getQueue()->getProcessor()->getSignalHandler(); // даже если сигнал был прислан до подписки, метод dispatch() еще не вызывался, // поэтому terminate нормально обработается $signalHandler->addHandler(SIGTERM, [$this, 'signalTerminate'], false); $signalHandler->addHandler(SIGINT, [$this, 'signalTerminate'], false); Logger::reopen(); }
public function testLogStream() { $path = '/tmp/log.txt'; if (is_file($path)) { unlink($path); } Logger::configure(); $appender = new AppenderStream($path); $appender->setLayout(new LayoutSimple()); Logger::getRootLogger()->addAppender($appender); Logger::getRootLogger()->info('hello world'); $this->assertSame('root [INFO] - hello world' . PHP_EOL, file_get_contents($path)); }