From ca1bc16b46257ebb9e95403e88ea7ba5e7751c75 Mon Sep 17 00:00:00 2001 From: Kyran Date: Wed, 20 Apr 2022 13:36:50 +1000 Subject: [PATCH] Global request logging WIP --- config/http-client-logger.php | 12 +++++++++ src/Listeners/LogRequestSending.php | 27 +++++++++++++++++++ src/Listeners/LogResponseReceived.php | 25 ++++++++++++++++++ src/Providers/EventServiceProvider.php | 36 ++++++++++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 src/Listeners/LogRequestSending.php create mode 100644 src/Listeners/LogResponseReceived.php create mode 100644 src/Providers/EventServiceProvider.php diff --git a/config/http-client-logger.php b/config/http-client-logger.php index 8ad1436..9ac6090 100644 --- a/config/http-client-logger.php +++ b/config/http-client-logger.php @@ -25,6 +25,18 @@ */ 'enabled' => env('HTTP_CLIENT_LOGGER_ENABLED', true), + /* + |-------------------------------------------------------------------------- + | Global logging + |-------------------------------------------------------------------------- + | + | Whether or not logging should be globally enabled when using the option + | specified below. Filters will stil be applied at runtime and will not + | override this setting. + | + */ + 'global' => env('HTTP_CLIENT_GLOBAL_LOGGING_ENABLED', false), + /* |-------------------------------------------------------------------------- | Filtering options diff --git a/src/Listeners/LogRequestSending.php b/src/Listeners/LogRequestSending.php new file mode 100644 index 0000000..4bd5d7e --- /dev/null +++ b/src/Listeners/LogRequestSending.php @@ -0,0 +1,27 @@ +request->withMiddleware((new LoggingMiddleware( + $logger ?? app(HttpLoggerInterface::class), + $filter ?? app(HttpLoggingFilterInterface::class) + ))->__invoke($context = [], $config = [])); + } + + +} \ No newline at end of file diff --git a/src/Listeners/LogResponseReceived.php b/src/Listeners/LogResponseReceived.php new file mode 100644 index 0000000..7bd45d3 --- /dev/null +++ b/src/Listeners/LogResponseReceived.php @@ -0,0 +1,25 @@ +response->withMiddleware((new LoggingMiddleware( + $logger ?? app(HttpLoggerInterface::class), + $filter ?? app(HttpLoggingFilterInterface::class) + ))->__invoke($context = [], $config = [])); + } +} \ No newline at end of file diff --git a/src/Providers/EventServiceProvider.php b/src/Providers/EventServiceProvider.php new file mode 100644 index 0000000..db83b6a --- /dev/null +++ b/src/Providers/EventServiceProvider.php @@ -0,0 +1,36 @@ + [ + LogRequestSending::class, + ], + ResponseReceived::class => [ + LogResponseReceived::class, + ], + ]; + + /** + * Get the events and handlers. + * + * @return array + */ + public function listens() + { + return config('http-client-logger.global') ? $this->listen : []; + } +} \ No newline at end of file