vendor/codeages/biz-framework/src/Provider/MonologServiceProvider.php line 57

Open in your IDE?
  1. <?php
  2. /*
  3.  * 此文件来自 Silex 项目(https://github.com/silexphp/Silex).
  4.  *
  5.  * 版权信息请看 LICENSE.SILEX
  6.  */
  7. namespace Codeages\Biz\Framework\Provider;
  8. use Codeages\Biz\Framework\Context\Biz;
  9. use Codeages\Biz\Framework\Context\BootableProviderInterface;
  10. use Pimple\Container;
  11. use Pimple\ServiceProviderInterface;
  12. use Monolog\Formatter\LineFormatter;
  13. use Monolog\Logger;
  14. use Monolog\Handler;
  15. use Monolog\ErrorHandler;
  16. use Symfony\Bridge\Monolog\Handler\DebugHandler;
  17. /**
  18.  * Monolog Provider.
  19.  *
  20.  * @SuppressWarnings(PHPMD.StaticAccess)
  21.  *
  22.  * @author Fabien Potencier <fabien@symfony.com>
  23.  */
  24. class MonologServiceProvider implements ServiceProviderInterfaceBootableProviderInterface
  25. {
  26.     public function register(Container $app)
  27.     {
  28.         $app['logger'] = function () use ($app) {
  29.             return $app['monolog'];
  30.         };
  31.         if ($bridge class_exists('Symfony\Bridge\Monolog\Logger')) {
  32.             $app['monolog.handler.debug'] = function () use ($app) {
  33.                 $level MonologServiceProvider::translateLevel($app['monolog.level']);
  34.                 return new DebugHandler($level);
  35.             };
  36.         }
  37.         $app['monolog.logger.class'] = $bridge 'Symfony\Bridge\Monolog\Logger' 'Monolog\Logger';
  38.         $app['monolog'] = function ($app) {
  39.             $log = new $app['monolog.logger.class']($app['monolog.name']);
  40.             $handler = new Handler\GroupHandler($app['monolog.handlers']);
  41.             if (isset($app['monolog.not_found_activation_strategy'])) {
  42.                 $handler = new Handler\FingersCrossedHandler($handler$app['monolog.not_found_activation_strategy']);
  43.             }
  44.             $log->pushHandler($handler);
  45.             if ($app['debug'] && isset($app['monolog.handler.debug'])) {
  46.                 $log->pushHandler($app['monolog.handler.debug']);
  47.             }
  48.             return $log;
  49.         };
  50.         $app['monolog.formatter'] = function () {
  51.             return new LineFormatter();
  52.         };
  53.         $app['monolog.handler'] = $defaultHandler = function () use ($app) {
  54.             $level MonologServiceProvider::translateLevel($app['monolog.level']);
  55.             $handler = new Handler\StreamHandler($app['monolog.logfile'], $level$app['monolog.bubble'], $app['monolog.permission']);
  56.             $handler->setFormatter($app['monolog.formatter']);
  57.             return $handler;
  58.         };
  59.         $app['monolog.handlers'] = function () use ($app$defaultHandler) {
  60.             $handlers = array();
  61.             // enables the default handler if a logfile was set or the monolog.handler service was redefined
  62.             if ($app['monolog.logfile'] || $defaultHandler !== $app->raw('monolog.handler')) {
  63.                 $handlers[] = $app['monolog.handler'];
  64.             }
  65.             return $handlers;
  66.         };
  67.         $app['monolog.level'] = function () {
  68.             return Logger::DEBUG;
  69.         };
  70.         $app['monolog.name'] = 'app';
  71.         $app['monolog.bubble'] = true;
  72.         $app['monolog.permission'] = null;
  73.         $app['monolog.exception.logger_filter'] = null;
  74.         $app['monolog.logfile'] = null;
  75.         $app['monolog.use_error_handler'] = function ($app) {
  76.             return !$app['debug'];
  77.         };
  78.     }
  79.     public function boot(Biz $app)
  80.     {
  81.         if ($app['monolog.use_error_handler']) {
  82.             ErrorHandler::register($app['monolog']);
  83.         }
  84.     }
  85.     public static function translateLevel($name)
  86.     {
  87.         // level is already translated to logger constant, return as-is
  88.         if (is_int($name)) {
  89.             return $name;
  90.         }
  91.         $levels Logger::getLevels();
  92.         $upper strtoupper($name);
  93.         if (!isset($levels[$upper])) {
  94.             throw new \InvalidArgumentException("Provided logging level '$name' does not exist. Must be a valid monolog logging level.");
  95.         }
  96.         return $levels[$upper];
  97.     }
  98. }