/** * {@inheritDoc} */ public function register(Container $container) { // Append custom settings with missing params from default settings $container['settings']['logger'] = self::mergeWithDefaultSettings($container['settings']['logger']); /** * Add dependency (DI). * * @param Container $c * * @return Logger */ $container['logger'] = function (Container $c) { $settings = $c['settings']['logger']; $loggerFormat = "[%datetime%] %level_name% %message% %context% %extra%\n"; $loggerTimeFormat = "Y-m-d H:i:s"; $loggerTimeZone = new DateTimeZone('Europe/Berlin'); $logger = new Logger($settings['name']); if ($settings['color']) { $logger->pushProcessor(new ConsoleColorProcessor()); } $logger->pushProcessor(new CleanupProcessor($settings['trimPaths'])); $logger->pushProcessor(new IntrospectionProcessor(Logger::WARNING)); $logger->pushProcessor(new ProcessIdProcessor()); $logger->pushProcessor(new PsrLogMessageProcessor()); $logger->setTimezone($loggerTimeZone); $logger->useMicrosecondTimestamps(false); // Using microseconds is buggy (2016-08-04) $formatter = new LineFormatter($loggerFormat, $loggerTimeFormat); $formatter->ignoreEmptyContextAndExtra(true); $defaultHandler = new StreamHandler('php://stdout', $settings['level'], $bubble = false); $defaultHandler->setFormatter($formatter); $logger->pushHandler($defaultHandler); $errorHandler = new StreamHandler('php://stderr', Logger::ERROR, $bubble = false); $errorHandler->setFormatter($formatter); $logger->pushHandler($errorHandler); // Register logger as default PHP error, exception and shutdown handler // Note: Make sure only this handler handles errors (set $callPrevious to false) $errorHandler = ErrorHandler::register($logger, $errorLevelMap = false, $exceptionLevelMap = false); $errorHandler->registerErrorHandler($levelMap = [], $callPrevious = false); $errorHandler->registerExceptionHandler($levelMap = [], $callPrevious = false); return $logger; }; }
/** * @dataProvider useMicrosecondTimestampsProvider * @covers Monolog\Logger::useMicrosecondTimestamps * @covers Monolog\Logger::addRecord */ public function testUseMicrosecondTimestamps($micro, $assert) { $logger = new Logger('foo'); $logger->useMicrosecondTimestamps($micro); $handler = new TestHandler(); $logger->pushHandler($handler); $logger->info('test'); list($record) = $handler->getRecords(); $this->{$assert}('000000', $record['datetime']->format('u')); }