From 78dc5eeb98a5b155bf96c7af2c7cd05171b264ef Mon Sep 17 00:00:00 2001
From: Bart Jaskulski <bjaskulski@protonmail.com>
Date: Mon, 16 May 2022 17:21:32 +0200
Subject: [PATCH] fix: add option for setting channel in WooCommerce logger

---
 src/SimpleLoggerFactory.php   |  2 +-
 src/WC/WooCommerceHandler.php | 51 ++++++++++++++++++++---------------
 2 files changed, 30 insertions(+), 23 deletions(-)

diff --git a/src/SimpleLoggerFactory.php b/src/SimpleLoggerFactory.php
index 4e59eb8..afce5f1 100644
--- a/src/SimpleLoggerFactory.php
+++ b/src/SimpleLoggerFactory.php
@@ -46,7 +46,7 @@ final class SimpleLoggerFactory implements LoggerFactory {
 
 	private function get_wc_handler(): HandlerInterface {
 		if ( function_exists( 'wc_get_logger' ) ) {
-			return new WooCommerceHandler( wc_get_logger(), $this->options->level );
+			return new WooCommerceHandler( wc_get_logger(), $this->channel );
 		}
 
 		return new NullHandler();
diff --git a/src/WC/WooCommerceHandler.php b/src/WC/WooCommerceHandler.php
index 9e6da94..960f9df 100644
--- a/src/WC/WooCommerceHandler.php
+++ b/src/WC/WooCommerceHandler.php
@@ -9,36 +9,43 @@ use Monolog\Logger;
  * Class WooCommerceFactory
  */
 class WooCommerceHandler extends AbstractProcessingHandler {
-    const DEFAULT_WC_SOURCE = 'wpdesk-logger';
+	const DEFAULT_WC_SOURCE = 'wpdesk-logger';
 
 	/** @var \WC_Logger_Interface */
 	private $wc_logger;
 
-    /**
-     * Writes the record down to the log of the implementing handler
-     *
-     * @param  array $record
-     * @return void
-     */
-    protected function write(array $record)
-    {
-	    $context = array_merge([
-            'source' => self::DEFAULT_WC_SOURCE
-        ], $record['extra'], $record['context']);
-
-	    $this->wc_logger->log($this->convertMonologLevelToWC($record['level']), $record['message'], $context);
+	/** @var string */
+	private $channel;
+
+	/**
+	 * Writes the record down to the log of the implementing handler
+	 *
+	 * @param  array $record
+	 * @return void
+	 */
+	protected function write( array $record ) {
+		$context = array_merge(
+			[
+				'source' => $this->channel;,
+			],
+			$record['extra'],
+			$record['context']
+		);
+
+		$this->wc_logger->log( $this->convertMonologLevelToWC( $record['level'] ), $record['message'], $context );
 	}
 
-    /**
-     * @param int $level
-     * @return string
-     */
-	private function convertMonologLevelToWC($level) {
-        return Logger::getLevelName($level);
-    }
+	/**
+	 * @param int $level
+	 * @return string
+	 */
+	private function convertMonologLevelToWC( $level ) {
+		return Logger::getLevelName( $level );
+	}
 
-	public function __construct(\WC_Logger_Interface $originalWcLogger) {
+	public function __construct( \WC_Logger_Interface $originalWcLogger, string $channel = self::DEFAULT_WC_SOURCE ) {
 		parent::__construct();
 		$this->wc_logger = $originalWcLogger;
+		$this->channel   = $channel;
 	}
 }
-- 
GitLab