]> git.mxchange.org Git - friendica.git/commitdiff
Fix SyslogLogger and tests
authorPhilipp <admin@philipp.info>
Sun, 16 Jul 2023 23:16:29 +0000 (01:16 +0200)
committerPhilipp <admin@philipp.info>
Sun, 16 Jul 2023 23:16:29 +0000 (01:16 +0200)
src/Core/Logger/Factory/SyslogLogger.php
tests/functional/DependencyCheckTest.php
tests/src/Core/Logger/SyslogLoggerFactoryWrapper.php [new file with mode: 0644]
tests/src/Core/Logger/SyslogLoggerTest.php
tests/src/Core/Logger/SyslogLoggerWrapper.php

index 385625862652fd88083e01ea177536025980918b..7b1712344b7746561eb7e8e098009c28b053d3d6 100644 (file)
@@ -23,9 +23,9 @@ namespace Friendica\Core\Logger\Factory;
 
 use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\Core\Logger\Exception\LoggerException;
+use Friendica\Core\Logger\Exception\LogLevelException;
 use Friendica\Core\Logger\Type\SyslogLogger as SyslogLoggerClass;
 use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
 
 /**
  * The logger factory for the SyslogLogger instance
@@ -49,10 +49,10 @@ class SyslogLogger extends AbstractLoggerTypeFactory
                $logFacility = $config->get('system', 'syslog_facility') ?? SyslogLoggerClass::DEFAULT_FACILITY;
                $loglevel    = SyslogLogger::mapLegacyConfigDebugLevel($config->get('system', 'loglevel'));
 
-               if (!array_key_exists($loglevel, SyslogLoggerClass::logLevels)) {
+               if (array_key_exists($loglevel, SyslogLoggerClass::logLevels)) {
                        $loglevel = SyslogLoggerClass::logLevels[$loglevel];
                } else {
-                       $loglevel = SyslogLoggerClass::logLevels[LogLevel::NOTICE];
+                       throw new LogLevelException(sprintf('The level "%s" is not valid.', $loglevel));
                }
 
                return new SyslogLoggerClass($this->channel, $this->introspection, $loglevel, $logOpts, $logFacility);
index 89b8f79a542d85c11f76c0f3f9fbfcc5f1edfa3f..4488fe5868df6f4b7823411506db4c125fa98917 100644 (file)
@@ -145,7 +145,7 @@ class DependencyCheckTest extends FixtureTest
                $config->set('system', 'dlogfile', $this->root->url() . '/friendica.log');
 
                /** @var LoggerInterface $logger */
-               $logger = $this->dice->create('$devLogger', [['$channel' => 'dev']]);
+               $logger = $this->dice->create('$devLogger', ['dev']);
 
                self::assertInstanceOf(LoggerInterface::class, $logger);
        }
diff --git a/tests/src/Core/Logger/SyslogLoggerFactoryWrapper.php b/tests/src/Core/Logger/SyslogLoggerFactoryWrapper.php
new file mode 100644 (file)
index 0000000..30aaa44
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2023, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Test\src\Core\Logger;
+
+use Friendica\Core\Config\Capability\IManageConfigValues;
+use Friendica\Core\Logger\Exception\LogLevelException;
+use Friendica\Core\Logger\Factory\SyslogLogger;
+use Friendica\Core\Logger\Type\SyslogLogger as SyslogLoggerClass;
+use Psr\Log\LoggerInterface;
+use Psr\Log\LogLevel;
+
+class SyslogLoggerFactoryWrapper extends SyslogLogger
+{
+       public function create(IManageConfigValues $config): LoggerInterface
+       {
+               $logOpts     = $config->get('system', 'syslog_flags')    ?? SyslogLoggerClass::DEFAULT_FLAGS;
+               $logFacility = $config->get('system', 'syslog_facility') ?? SyslogLoggerClass::DEFAULT_FACILITY;
+               $loglevel    = SyslogLogger::mapLegacyConfigDebugLevel($config->get('system', 'loglevel'));
+
+               if (array_key_exists($loglevel, SyslogLoggerClass::logLevels)) {
+                       $loglevel = SyslogLoggerClass::logLevels[$loglevel];
+               } else {
+                       throw new LogLevelException(sprintf('The level "%s" is not valid.', $loglevel));
+               }
+
+               return new SyslogLoggerWrapper($this->channel, $this->introspection, $loglevel, $logOpts, $logFacility);
+       }
+}
index 53ace79c0867a04fe816c6a7db16e2bee8ac5fc0..c22aecc10b8ddaa2c0d533adadb94dbc49183b12 100644 (file)
@@ -21,8 +21,6 @@
 
 namespace Friendica\Test\src\Core\Logger;
 
-use Friendica\Core\Logger\Exception\LoggerArgumentException;
-use Friendica\Core\Logger\Exception\LoggerException;
 use Friendica\Core\Logger\Exception\LogLevelException;
 use Friendica\Core\Logger\Type\SyslogLogger;
 use Psr\Log\LogLevel;
@@ -58,7 +56,10 @@ class SyslogLoggerTest extends AbstractLoggerTest
         */
        protected function getInstance($level = LogLevel::DEBUG)
        {
-               $this->logger = new SyslogLoggerWrapper('test', $this->config, $this->introspection, $level);
+               $this->config->shouldReceive('get')->with('system', 'loglevel')->andReturn($level);
+
+               $loggerFactory = new SyslogLoggerFactoryWrapper($this->introspection, 'test');
+               $this->logger = $loggerFactory->create($this->config);
 
                return $this->logger;
        }
@@ -71,8 +72,8 @@ class SyslogLoggerTest extends AbstractLoggerTest
        {
                $this->expectException(LogLevelException::class);
                $this->expectExceptionMessageMatches("/The level \".*\" is not valid./");
-               
-               $logger = new SyslogLoggerWrapper('test', $this->config, $this->introspection, 'NOPE');
+
+               $logger = $this->getInstance('NOPE');
        }
 
        /**
@@ -83,7 +84,7 @@ class SyslogLoggerTest extends AbstractLoggerTest
                $this->expectException(LogLevelException::class);
                $this->expectExceptionMessageMatches("/The level \".*\" is not valid./");
 
-               $logger = new SyslogLoggerWrapper('test', $this->config, $this->introspection);
+               $logger = $this->getInstance();
 
                $logger->log('NOPE', 'a test');
        }
@@ -94,7 +95,7 @@ class SyslogLoggerTest extends AbstractLoggerTest
         */
        public function testClose()
        {
-               $logger = new SyslogLoggerWrapper('test', $this->config, $this->introspection);
+               $logger = $this->getInstance();
                $logger->emergency('test');
                $logger->close();
                // Reopened itself
index 9fd16706a89cf35e7bdaeb5a08f2798dcdee5914..1e0c4535f96e0787fdc975a864646c447f570d97 100644 (file)
 
 namespace Friendica\Test\src\Core\Logger;
 
-use Friendica\Core\Config\Capability\IManageConfigValues;
+use Friendica\Core\Logger\Capabilities\IHaveCallIntrospections;
 use Friendica\Core\Logger\Type\SyslogLogger;
-use Friendica\Core\Logger\Util\Introspection;
-use Psr\Log\LogLevel;
 
 /**
  * Wraps the SyslogLogger for replacing the syslog call with a string field.
@@ -33,9 +31,9 @@ class SyslogLoggerWrapper extends SyslogLogger
 {
        private $content;
 
-       public function __construct($channel, IManageConfigValues $config, Introspection $introspection, $level = LogLevel::NOTICE)
+       public function __construct(string $channel, IHaveCallIntrospections $introspection, string $logLevel, string $logOptions, string $logFacility)
        {
-               parent::__construct($channel, $config, $introspection, $level);
+               parent::__construct($channel, $introspection, $logLevel, $logOptions, $logFacility);
 
                $this->content = '';
        }