From 06f8e198c20f050542f6a00b04ca3bb1713e1996 Mon Sep 17 00:00:00 2001
From: Bart Jaskulski <bjaskulski@protonmail.com>
Date: Wed, 15 Jun 2022 00:04:42 +0200
Subject: [PATCH] fix: prevent reading log unless we need write it

---
 src/WpdbLogger.php | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/WpdbLogger.php b/src/WpdbLogger.php
index b0fedbd..47119c0 100644
--- a/src/WpdbLogger.php
+++ b/src/WpdbLogger.php
@@ -11,20 +11,25 @@ class WpdbLogger implements \Psr\Log\LoggerInterface {
 	private const MAX_LOG_SIZE = 30;
 
 	/** @var string[] */
-	private $log;
+	private $log = [];
 
 	/** @var string */
 	private $log_name;
 
 	public function __construct( string $log_name ) {
 		$this->log_name = $log_name;
-		$this->log      = json_decode( get_option( $this->log_name, '[]' ) );
-		if ( ! \is_array( $this->log ) ) {
-			$this->log = [];
-		}
 	}
 
 	public function log( $level, $message, array $context = [] ) {
+		if ( empty( $this->log ) ) {
+			$this->log = json_decode(
+				get_option(
+					$this->log_name,
+					'[]'
+				)
+			);
+		}
+
 		$this->log[] = date( 'Y-m-d G:i:s' ) . sprintf( ': %s', $message );
 		if ( \count( $this->log ) > self::MAX_LOG_SIZE ) {
 			array_shift( $this->log );
-- 
GitLab