From b7f3c332e44c08dbacb859ae474967c123c6ca2a Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Mon, 8 Aug 2016 11:56:19 +0200 Subject: [PATCH] Created Logger factory and logger config, and added logger dependencies --- composer.json | 4 +- config/autoload/logger.global.php | 22 ++++++++++- config/autoload/logger.local.php.dist | 14 +++++++ module/Common/config/dependencies.config.php | 9 ++++- module/Common/src/Factory/LoggerFactory.php | 39 ++++++++++++++++++++ 5 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 config/autoload/logger.local.php.dist create mode 100644 module/Common/src/Factory/LoggerFactory.php diff --git a/composer.json b/composer.json index 72391371..9ea805ba 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,9 @@ "doctrine/orm": "^2.5", "guzzlehttp/guzzle": "^6.2", "symfony/console": "^3.0", - "firebase/php-jwt": "^4.0" + "firebase/php-jwt": "^4.0", + "monolog/monolog": "^1.21", + "theorchard/monolog-cascade": "^0.4" }, "require-dev": { "phpunit/phpunit": "^5.0", diff --git a/config/autoload/logger.global.php b/config/autoload/logger.global.php index d7f246bc..2a56bdad 100644 --- a/config/autoload/logger.global.php +++ b/config/autoload/logger.global.php @@ -1,10 +1,30 @@ [ + 'formatters' => [ + 'dashed' => [ + 'format' => '[%datetime%] %channel%.%level_name% - %message% %context%' . PHP_EOL, + 'include_stacktraces' => true, + ], + ], + + 'handlers' => [ + 'rotating_file_handler' => [ + 'class' => RotatingFileHandler::class, + 'level' => Logger::INFO, + 'filename' => 'data/log/shlink_log.log', + 'max_files' => 30, + 'formatter' => 'dashed', + ], + ], + 'loggers' => [ 'Shlink' => [ - 'handlers' => [], + 'handlers' => ['rotating_file_handler'], ], ], ], diff --git a/config/autoload/logger.local.php.dist b/config/autoload/logger.local.php.dist new file mode 100644 index 00000000..951a3af0 --- /dev/null +++ b/config/autoload/logger.local.php.dist @@ -0,0 +1,14 @@ + [ + 'handlers' => [ + 'rotating_file_handler' => [ + 'level' => Logger::DEBUG, + ], + ], + ], + +]; diff --git a/module/Common/config/dependencies.config.php b/module/Common/config/dependencies.config.php index bcd30faa..ea670d57 100644 --- a/module/Common/config/dependencies.config.php +++ b/module/Common/config/dependencies.config.php @@ -2,9 +2,11 @@ use Acelaya\ZsmAnnotatedServices\Factory\V3\AnnotatedFactory; use Doctrine\Common\Cache\Cache; use Doctrine\ORM\EntityManager; +use Psr\Log\LoggerInterface; use Shlinkio\Shlink\Common\ErrorHandler; use Shlinkio\Shlink\Common\Factory\CacheFactory; use Shlinkio\Shlink\Common\Factory\EntityManagerFactory; +use Shlinkio\Shlink\Common\Factory\LoggerFactory; use Shlinkio\Shlink\Common\Factory\TranslatorFactory; use Shlinkio\Shlink\Common\Middleware\LocaleMiddleware; use Shlinkio\Shlink\Common\Service\IpLocationResolver; @@ -19,11 +21,15 @@ return [ EntityManager::class => EntityManagerFactory::class, GuzzleHttp\Client::class => InvokableFactory::class, Cache::class => CacheFactory::class, - IpLocationResolver::class => AnnotatedFactory::class, + LoggerInterface::class => LoggerFactory::class, + 'Logger_Shlink' => LoggerFactory::class, + Translator::class => TranslatorFactory::class, TranslatorExtension::class => AnnotatedFactory::class, LocaleMiddleware::class => AnnotatedFactory::class, + IpLocationResolver::class => AnnotatedFactory::class, + ErrorHandler\ContentBasedErrorHandler::class => AnnotatedFactory::class, ErrorHandler\ErrorHandlerManager::class => ErrorHandler\ErrorHandlerManagerFactory::class, ], @@ -31,6 +37,7 @@ return [ 'em' => EntityManager::class, 'httpClient' => GuzzleHttp\Client::class, 'translator' => Translator::class, + 'logger' => LoggerInterface::class, AnnotatedFactory::CACHE_SERVICE => Cache::class, ], ], diff --git a/module/Common/src/Factory/LoggerFactory.php b/module/Common/src/Factory/LoggerFactory.php new file mode 100644 index 00000000..d42b2f01 --- /dev/null +++ b/module/Common/src/Factory/LoggerFactory.php @@ -0,0 +1,39 @@ +has('config') ? $container->get('config') : []; + Cascade::fileConfig(isset($config['logger']) ? $config['logger'] : ['loggers' => []]); + + // Compose requested logger name + $loggerName = isset($options) & isset($options['logger_name']) ? $options['logger_name'] : 'Logger'; + $nameParts = explode('_', $requestedName); + if (count($nameParts) > 1) { + $loggerName = $nameParts[1]; + } + + return Cascade::getLogger($loggerName); + } +}