From 2bb34bc1ff7ee9b04646be48e88791416b4a70ed Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tvdijen@gmail.com>
Date: Tue, 23 Jul 2019 21:53:55 +0200
Subject: [PATCH] Fix Logger

---
 lib/SimpleSAML/Logger.php | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/lib/SimpleSAML/Logger.php b/lib/SimpleSAML/Logger.php
index 24ac413ed..603343d96 100644
--- a/lib/SimpleSAML/Logger.php
+++ b/lib/SimpleSAML/Logger.php
@@ -13,10 +13,15 @@ namespace SimpleSAML;
 class Logger
 {
     /**
-     * @var \SimpleSAML\Logger\LoggingHandlerInterface|false
+     * @var \SimpleSAML\Logger\LoggingHandlerInterface
      */
     private static $loggingHandler;
 
+    /**
+     * @var bool
+     */
+    private static $initializing = false;
+
     /**
      * @var integer|null
      */
@@ -393,6 +398,9 @@ class Logger
             register_shutdown_function([self::class, 'shutdown']);
             self::$shutdownRegistered = true;
         }
+
+        // Set initializing to true > all went well!
+        self::$initializing = true;
     }
 
 
@@ -403,9 +411,6 @@ class Logger
      */
     private static function createLoggingHandler($handler = null)
     {
-        // set to false to indicate that it is being initialized
-        self::$loggingHandler = false;
-
         // a set of known logging handlers
         $known_handlers = [
             'syslog'   => 'SimpleSAML\Logger\SyslogLoggingHandler',
@@ -439,6 +444,7 @@ class Logger
             }
             $handler = $known_handlers[$handler];
         }
+
         /** @var \SimpleSAML\Logger\LoggingHandlerInterface */
         self::$loggingHandler = new $handler($config);
 
@@ -455,20 +461,20 @@ class Logger
      */
     private static function log($level, $string, $statsLog = false)
     {
-        if (self::$loggingHandler === false) {
+        if (self::$initializing === false) {
             // some error occurred while initializing logging
             self::defer($level, $string, $statsLog);
             return;
         } elseif (php_sapi_name() === 'cli' || defined('STDIN')) {
             // we are being executed from the CLI, nowhere to log
-            if (is_null(self::$loggingHandler)) {
+            if (!isset(self::$loggingHandler)) {
                 self::createLoggingHandler(\SimpleSAML\Logger\StandardErrorLoggingHandler::class);
             }
             $_SERVER['REMOTE_ADDR'] = "CLI";
             if (self::$trackid === self::NO_TRACKID) {
                 self::$trackid = 'CL'.bin2hex(openssl_random_pseudo_bytes(4));
             }
-        } elseif (self::$loggingHandler === null) {
+        } elseif (!isset(self::$loggingHandler)) {
             // Initialize logging
             self::createLoggingHandler();
             self::flush();
-- 
GitLab