From 1cb5b1b1e23b4b30bc4668aafd916c89a2aa0d8b Mon Sep 17 00:00:00 2001
From: dyszczo <krzysiek@inspirelabs.pl>
Date: Tue, 30 Oct 2018 15:45:49 +0100
Subject: [PATCH] setDisableLog changes to disableLog

---
 CHANGELOG.md                                  |  7 ++-
 src/Filter/BooleanFilter.php                  | 46 -------------------
 src/LoggerFacade.php                          |  6 +--
 src/WPDeskLoggerFactory.php                   | 32 ++++++-------
 tests/integration/TestWPDeskLoggerFactory.php | 26 ++++++-----
 5 files changed, 35 insertions(+), 82 deletions(-)
 delete mode 100644 src/Filter/BooleanFilter.php

diff --git a/CHANGELOG.md b/CHANGELOG.md
index c10236d..2a8430a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
-[1.2.0] - 2018-10-29
-## 
+## [1.3.1] - 2018-10-30
+### Changed
+- changed 
+
+## [1.2.0] - 2018-10-29 
 ### Changed 
 - getWPDeskFileName renamed to getFileName
 - isWPDeskLogWorking renamed to isLogWorking
diff --git a/src/Filter/BooleanFilter.php b/src/Filter/BooleanFilter.php
deleted file mode 100644
index 80606af..0000000
--- a/src/Filter/BooleanFilter.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace WPDesk\Logger\Filter;
-
-use Monolog\Handler\AbstractHandler;
-use Monolog\Logger;
-
-/**
- * Can disable or enable logging for logger
- *
- * @package WPDesk\Logger
- */
-class BooleanFilter extends AbstractHandler
-{
-    /** @var bool */
-    private $disable = false;
-
-    /**
-     * BooleanFilter constructor.
-     * @param bool $disable
-     */
-    public function __construct($disable = false)
-    {
-        parent::__construct(Logger::DEBUG, !$disable);
-        $this->setDisable($disable);
-    }
-
-    /**
-     * @param bool $bool
-     */
-    public function setDisable($bool) {
-        $this->disable = $bool;
-        $this->bubble = !$bool;
-    }
-
-    public function handle(array $record)
-    {
-        return $this->disable;
-    }
-
-    public function isHandling(array $record)
-    {
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/src/LoggerFacade.php b/src/LoggerFacade.php
index 6cf9239..accb35b 100644
--- a/src/LoggerFacade.php
+++ b/src/LoggerFacade.php
@@ -48,13 +48,11 @@ class LoggerFacade
     /**
      * If set, logs are disabled
      *
-     * @param bool $flag
      * @param string $name Name of the logger
      */
-    public static function set_disable_log($flag, $name = WPDeskLoggerFactory::DEFAULT_LOGGER_CHANNEL_NAME)
+    public static function set_disable_log($name = WPDeskLoggerFactory::DEFAULT_LOGGER_CHANNEL_NAME)
     {
-        self::getLogger($name);
-        self::$factory->setDisableLog($flag);
+        self::$factory->disableLog($name);
     }
 
 
diff --git a/src/WPDeskLoggerFactory.php b/src/WPDeskLoggerFactory.php
index 0d4295e..feb59a2 100644
--- a/src/WPDeskLoggerFactory.php
+++ b/src/WPDeskLoggerFactory.php
@@ -3,6 +3,7 @@
 namespace WPDesk\Logger;
 
 use Monolog\Handler\AbstractHandler;
+use Monolog\Handler\NullHandler;
 use Monolog\Logger;
 use Monolog\Registry;
 use Monolog\ErrorHandler;
@@ -39,22 +40,18 @@ class WPDeskLoggerFactory extends BasicLoggerFactory
     }
 
     /**
-     * If set, logs are disabled
+     * Disable logger. Still exists but logs won't be saved
      *
-     * @param bool $flag should be disabled?
      * @param string $name Name of the logger
      */
-    public function setDisableLog($flag, $name = self::DEFAULT_LOGGER_CHANNEL_NAME)
+    public function disableLog($name = self::DEFAULT_LOGGER_CHANNEL_NAME)
     {
         if (!Registry::hasLogger($name)) {
             $this->createWPDeskLogger($name);
         }
         /** @var Logger $logger */
         $logger = Registry::getInstance($name);
-
-        /** @var BooleanFilter $filter */
-        $filter = $this->findHandlerByClass($logger, BooleanFilter::class);
-        $filter->setDisable($flag);
+        $this->removeAllHandlers($logger);
     }
 
     /**
@@ -88,7 +85,6 @@ class WPDeskLoggerFactory extends BasicLoggerFactory
         } catch (\Exception $e) {
             $logger->emergency('File log could not be written.');
         }
-        $logger->pushHandler(new BooleanFilter());
 
         return $logger;
     }
@@ -139,7 +135,8 @@ class WPDeskLoggerFactory extends BasicLoggerFactory
      *
      * @deprecated
      */
-    public function getWPDeskFileName() {
+    public function getWPDeskFileName()
+    {
         return $this->getFileName();
     }
 
@@ -156,22 +153,21 @@ class WPDeskLoggerFactory extends BasicLoggerFactory
     }
 
     /**
-     * Find handler in logger
+     * Removes all handlers from logger
      *
      * @param Logger $logger
-     * @param string $class Class handle to find
      *
-     * @return AbstractHandler If this is null then fatal failure is ok
+     * @return void
      */
-    private function findHandlerByClass(Logger $logger, $class)
+    private function removeAllHandlers(Logger $logger)
     {
-        foreach ($logger->getHandlers() as $handle) {
-            /** @var AbstractHandler $handle */
-            if (is_a($handle, $class)) {
-                return $handle;
+        try {
+            while (true) {
+                $logger->popHandler();
             }
+        } catch (\LogicException $e) {
+            $logger->pushHandler(new NullHandler());
         }
-        return null;
     }
 
     /**
diff --git a/tests/integration/TestWPDeskLoggerFactory.php b/tests/integration/TestWPDeskLoggerFactory.php
index 0131d6b..21fc459 100644
--- a/tests/integration/TestWPDeskLoggerFactory.php
+++ b/tests/integration/TestWPDeskLoggerFactory.php
@@ -8,17 +8,19 @@ use WPDesk\Logger\WPDeskLoggerFactory;
 
 class TestWPDeskLoggerFactory extends WP_UnitTestCase
 {
+    const LOGGER_NAME = 'somerandomname';
+
     public function tearDown()
     {
         parent::tearDown();
-        WPDeskLoggerFactory::tearDown();
+        WPDeskLoggerFactory::tearDown(self::LOGGER_NAME);
     }
 
     public function testCanCreateLogger()
     {
         $factory = new WPDeskLoggerFactory();
-        $this->assertInstanceOf(Logger::class, $factory->createWPDeskLogger(), "Logger should be created");
-        $this->assertTrue($factory->isLogWorking());
+        $this->assertInstanceOf(Logger::class, $factory->createWPDeskLogger(self::LOGGER_NAME), "Logger should be created");
+        $this->assertTrue($factory->isLogWorking(self::LOGGER_NAME));
     }
 
     public function testWCIsNotCorruptedByOtherTests()
@@ -37,7 +39,7 @@ class TestWPDeskLoggerFactory extends WP_UnitTestCase
         $someMessage = 'whatever';
         $errorType = E_USER_NOTICE;
 
-        $logger = (new WPDeskLoggerFactory())->createWPDeskLogger();
+        $logger = (new WPDeskLoggerFactory())->createWPDeskLogger(self::LOGGER_NAME);
         $logger->pushHandler($this->prepareListenHandleThatIsWaitingForMessage('E_USER_NOTICE: ' . $someMessage));
         $this->expectException(Notice::class);
         trigger_error($someMessage, $errorType);
@@ -74,7 +76,7 @@ class TestWPDeskLoggerFactory extends WP_UnitTestCase
     public function testOurLogsGetAllMessagesLoggedToWC()
     {
         $someMessage = 'whatever';
-        $logger = (new WPDeskLoggerFactory())->createWPDeskLogger();
+        $logger = (new WPDeskLoggerFactory())->createWPDeskLogger(self::LOGGER_NAME);
         $logger->pushHandler($this->prepareListenHandleThatIsWaitingForMessage($someMessage));
 
         wc_get_logger()->debug($someMessage);
@@ -83,7 +85,7 @@ class TestWPDeskLoggerFactory extends WP_UnitTestCase
     public function testLoggerWorksAndCanLogInGeneral()
     {
         $someMessage = 'whatever';
-        $logger = (new WPDeskLoggerFactory())->createWPDeskLogger();
+        $logger = (new WPDeskLoggerFactory())->createWPDeskLogger(self::LOGGER_NAME);
         $logger->pushHandler($this->prepareListenHandleThatIsWaitingForMessage($someMessage));
 
         $logger->debug($someMessage);
@@ -94,12 +96,12 @@ class TestWPDeskLoggerFactory extends WP_UnitTestCase
         $someMessage = 'whatever';
 
         $factory = new WPDeskLoggerFactory();
-        $logFilename = $factory->getFileName();
+        $logFilename = $factory->getFileName(self::LOGGER_NAME);
 
-        unlink($logFilename);
+        @unlink($logFilename);
         $this->assertFileNotExists($logFilename);
 
-        $logger = $factory->createWPDeskLogger();
+        $logger = $factory->createWPDeskLogger(self::LOGGER_NAME);
         $logger->debug($someMessage);
         $this->assertFileExists($logFilename);
     }
@@ -117,15 +119,15 @@ class TestWPDeskLoggerFactory extends WP_UnitTestCase
         }, 0, 100);
 
         $someMessage = 'whatever';
-        $logger = (new WPDeskLoggerFactory())->createWPDeskLogger();
+        $logger = (new WPDeskLoggerFactory())->createWPDeskLogger(self::LOGGER_NAME);
 
         $logger->debug($someMessage);
     }
 
     public function testDisable() {
         $factory = new WPDeskLoggerFactory();
-        $logger = $factory->createWPDeskLogger();
-        $factory->setDisableLog(true);
+        $logger = $factory->createWPDeskLogger(self::LOGGER_NAME);
+        $factory->disableLog(self::LOGGER_NAME);
 
         $listenHandle = $this->createMock(AbstractHandler::class);
 
-- 
GitLab