From 8c87a648a28cccf90274928f0215942354aaeb59 Mon Sep 17 00:00:00 2001
From: Bart Jaskulski <bjaskulski@protonmail.com>
Date: Sat, 20 Jul 2024 03:40:02 +0200
Subject: [PATCH] refactor: deprecate use of `Settings` class

Signed-off-by: Bart Jaskulski <bjaskulski@protonmail.com>
---
 src/Settings.php            | 11 +++++++++++
 src/SimpleLoggerFactory.php | 25 ++++++++++++++++++++++---
 2 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/Settings.php b/src/Settings.php
index aa648ce..1fa6f1b 100644
--- a/src/Settings.php
+++ b/src/Settings.php
@@ -4,6 +4,9 @@ namespace WPDesk\Logger;
 
 use Psr\Log\LogLevel;
 
+/**
+ * @deprecated
+ */
 final class Settings {
 
 	/** @var string */
@@ -26,4 +29,12 @@ final class Settings {
 		$this->use_wp_log = $use_wp_log;
 	}
 
+	public function to_array(): array {
+		return [
+			'level'      => $this->level,
+			'use_wc_log' => $this->use_wc_log,
+			'use_wp_log' => $this->use_wp_log,
+		];
+	}
+
 }
diff --git a/src/SimpleLoggerFactory.php b/src/SimpleLoggerFactory.php
index 86c2a6f..3ec0b81 100644
--- a/src/SimpleLoggerFactory.php
+++ b/src/SimpleLoggerFactory.php
@@ -8,11 +8,16 @@ use Monolog\Logger;
 use Monolog\Handler\ErrorLogHandler;
 use Monolog\Processor\PsrLogMessageProcessor;
 use Monolog\Processor\UidProcessor;
+use Psr\Log\LogLevel;
 use WPDesk\Logger\WC\WooCommerceHandler;
 
 final class SimpleLoggerFactory implements LoggerFactory {
 
-	/** @var Settings */
+	/**
+	 * @var array{
+	 *   level?: string,
+	 * }
+	 */
 	private $options;
 
 	/** @var string */
@@ -21,9 +26,23 @@ final class SimpleLoggerFactory implements LoggerFactory {
 	/** @var Logger */
 	private $logger;
 
-	public function __construct( string $channel, Settings $options = null ) {
+	/**
+	 * Valid options are:
+	 *   * level (default debug): Default logging level
+	 */
+	public function __construct( string $channel, $options = null ) {
 		$this->channel = $channel;
-		$this->options = $options ?? new Settings();
+
+		if ( $options instanceof Settings ) {
+			$options = $options->to_array();
+		}
+
+		$this->options = array_merge(
+			[
+				'level'        => LogLevel::DEBUG,
+			],
+			$options
+		);
 	}
 
 	public function getLogger( $name = null ): Logger {
-- 
GitLab