From b29960075d9706afdda39769582fb6a0115ab29e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 20 Oct 2023 17:37:14 +0200 Subject: [PATCH] Feat: Add logging --- config/packages/monolog.yaml | 23 +++++++++++++---- config/services.yaml | 8 ++++++ src/Command/BpnImportCommand.php | 6 ++++- src/Logging/InjectUserProcessor.php | 38 +++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 src/Logging/InjectUserProcessor.php diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml index 371efa2..203152c 100644 --- a/config/packages/monolog.yaml +++ b/config/packages/monolog.yaml @@ -2,6 +2,7 @@ monolog: channels: - deprecation - bpn + - myep when@dev: monolog: @@ -10,11 +11,17 @@ when@dev: type: stream path: "%kernel.logs_dir%/%kernel.environment%.log" level: debug - channels: ["!event", "!bpn"] + channels: ["!event", "!bpn", "!myep"] bpn: channels: ["bpn"] type: rotating_file - path: '%kernel.logs_dir%/%kernel.environment%.bpn.log' + path: '%kernel.logs_dir%/bpn.%kernel.environment%.log' + max_files: 5 + level: info + myep: + channels: [ "myep" ] + type: rotating_file + path: '%kernel.logs_dir%/myep.%kernel.environment%.log' max_files: 5 level: info console: @@ -45,7 +52,7 @@ when@prod: handler: nested excluded_http_codes: [404, 405] buffer_size: 50 # How many messages should be saved? Prevent memory leaks - channels: ["!bpn"] + channels: ["!bpn", "!myep"] nested: type: stream path: php://stderr @@ -54,13 +61,19 @@ when@prod: bpn: channels: ["bpn"] type: rotating_file - path: '%kernel.logs_dir%/%kernel.environment%.bpn.log' + path: '%kernel.logs_dir%/bpn.%kernel.environment%.log' + max_files: 5 + level: info + myep: + channels: [ "myep" ] + type: rotating_file + path: '%kernel.logs_dir%/myep.%kernel.environment%.log' max_files: 5 level: info console: type: console process_psr_3_messages: false - channels: ["!event", "!doctrine", "!bpn"] + channels: ["!event", "!doctrine", "!bpn", "!myep"] deprecation: type: stream channels: [deprecation] diff --git a/config/services.yaml b/config/services.yaml index 7072355..bc6c08a 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -11,6 +11,8 @@ services: _defaults: autowire: true autoconfigure: true + bind: + $logger: '@monolog.logger.myep' App\: resource: '../src/' @@ -53,6 +55,12 @@ services: $intlExtension: '@twig.extension.intl' $environment: '%kernel.environment%' + App\Logging\InjectUserProcessor: + arguments: + - '@security.helper' + tags: + - { name: monolog.processor, channel: myep } + App\Menu\AdminMenuBuilder: arguments: $factory: '@knp_menu.factory' diff --git a/src/Command/BpnImportCommand.php b/src/Command/BpnImportCommand.php index f550060..bd42ee3 100644 --- a/src/Command/BpnImportCommand.php +++ b/src/Command/BpnImportCommand.php @@ -5,6 +5,7 @@ namespace App\Command; use App\BusProNet\DataProvider\HotelDataProvider; use App\BusProNet\DataProvider\PickupDataProvider; use Doctrine\DBAL\Connection; +use Psr\Log\LoggerInterface; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -22,6 +23,7 @@ class BpnImportCommand extends Command private readonly Connection $connection, private readonly HotelDataProvider $hotelDataProvider, private readonly PickupDataProvider $pickupDataProvider, + private readonly LoggerInterface $logger, private readonly string $xmlFilesPath ) { parent::__construct(); @@ -124,7 +126,9 @@ class BpnImportCommand extends Command } } - $io->info('Added '.$addedCount.' and updated '.$updatedCount.' destinations'); + $logMessage = 'Added '.$addedCount.' and updated '.$updatedCount.' destinations'; + $io->info($logMessage); + $this->logger->info($logMessage); return Command::SUCCESS; } diff --git a/src/Logging/InjectUserProcessor.php b/src/Logging/InjectUserProcessor.php new file mode 100644 index 0000000..96637b8 --- /dev/null +++ b/src/Logging/InjectUserProcessor.php @@ -0,0 +1,38 @@ +extra['user'])) { + return $record; + } + + if ('cli' === php_sapi_name()) { + $record->extra['user'] = [ + 'id' => null, + 'username' => 'system', + 'role' => 'system', + ]; + return $record; + } elseif (null === $user = $this->security->getUser()) { + return $record; + } + + $record['extra']['user'] = [ + 'id' => $user->getId(), + 'email' => $user->getEmail(), + 'roles' => $user->getRoles(), + ]; + + return $record; + } +}