From 51a716e4e40e685e4dda00ea167cf2fb2feba605 Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bartek.jaskulski@wpdesk.net> Date: Mon, 28 Nov 2022 10:07:53 +0100 Subject: [PATCH] feat: add request id to logs To enhance debugging experience each logged line should contain id for current request. With such format it will be easier to identify all messages coming from single request. Having id enables `grep`-friendly output. Signed-off-by: Bart Jaskulski <bartek.jaskulski@wpdesk.net> --- src/SimpleLoggerFactory.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/SimpleLoggerFactory.php b/src/SimpleLoggerFactory.php index cfd2c0d..c591f69 100644 --- a/src/SimpleLoggerFactory.php +++ b/src/SimpleLoggerFactory.php @@ -3,6 +3,7 @@ declare( strict_types=1 ); namespace WPDesk\Logger; +use Monolog\Formatter\LineFormatter; use Monolog\Handler\HandlerInterface; use Monolog\Handler\NullHandler; use Monolog\Logger; @@ -33,19 +34,21 @@ final class SimpleLoggerFactory implements LoggerFactory { $logger = new Logger( $this->channel ); if ( $this->options->use_wc_log && \function_exists( 'wc_get_logger' ) ) { - $logger->pushHandler( - new WooCommerceHandler( - \wc_get_logger(), - $this->channel - ) - ); + $handler = new WooCommerceHandler( \wc_get_logger(), $this->channel ); } // Adding WooCommerce logger may have failed, if so add WP by default. if ( $this->options->use_wp_log || empty( $logger->getHandlers() ) ) { - $logger->pushHandler( $this->get_wp_handler() ); + $handler = $this->get_wp_handler(); } + $request_id = uniqid('', true); + $handler->setFormatter( + new LineFormatter( "[%datetime%] %channel%.%level_name%: %message% %context% %extra%, requestId: $request_id" ) + ); + + $logger->pushHandler( $handler ); + return $this->logger = $logger; } -- GitLab