/**
  * {@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;
     };
 }
 public function addDebugLogger(Logger $logger, SymfonyStyle $output)
 {
     $lineFormatter = new LineFormatter("[%datetime%] %channel%.%level_name%: %message%\n");
     $lineFormatter->allowInlineLineBreaks(true);
     $lineFormatter->ignoreEmptyContextAndExtra(true);
     $stdoutHandler = new PsrHandler(new ConsoleLogger($output));
     $stdoutHandler->setFormatter($lineFormatter);
     $logger->pushHandler($stdoutHandler);
 }
Esempio n. 3
0
 /**
  * @param array $formatterConfig
  *
  * @return Monolog\Formatter\LineFormatter
  */
 private function _createLine(array $formatterConfig)
 {
     $boolValues = array('true' => true, 'false' => false);
     $format = null;
     if (true === array_key_exists('format', $formatterConfig)) {
         $format = $formatterConfig['format'];
     }
     $dateFormat = null;
     if (true === array_key_exists('dateFormat', $formatterConfig)) {
         $dateFormat = $formatterConfig['dateFormat'];
     }
     $includeStacktraces = false;
     if (true === array_key_exists('includeStacktraces', $formatterConfig) && true === array_key_exists($formatterConfig['includeStacktraces'], $boolValues)) {
         $includeStacktraces = $boolValues[$formatterConfig['includeStacktraces']];
     }
     $allowInlineLineBreaks = false;
     if (true === array_key_exists('allowInlineLineBreaks', $formatterConfig) && true === array_key_exists($formatterConfig['allowInlineLineBreaks'], $boolValues)) {
         $allowInlineLineBreaks = $boolValues[$formatterConfig['allowInlineLineBreaks']];
     }
     $ignoreEmptyContextAndExtra = false;
     if (true === array_key_exists('ignoreEmptyContextAndExtra', $formatterConfig) && true === array_key_exists($formatterConfig['ignoreEmptyContextAndExtra'], $boolValues)) {
         $ignoreEmptyContextAndExtra = $boolValues[$formatterConfig['ignoreEmptyContextAndExtra']];
     }
     $formatter = new Monolog\Formatter\LineFormatter($format, $dateFormat);
     $formatter->includeStacktraces($includeStacktraces);
     $formatter->allowInlineLineBreaks($allowInlineLineBreaks);
     $formatter->ignoreEmptyContextAndExtra($ignoreEmptyContextAndExtra);
     return $formatter;
 }