Always return NullLogger if debug is disabled

This commit is contained in:
Art4 2025-01-10 12:36:13 +00:00
parent 4a8533aa11
commit f65a838594
2 changed files with 35 additions and 5 deletions

View file

@ -9,6 +9,7 @@ declare(strict_types=1);
namespace Friendica\Core\Logger\Factory; namespace Friendica\Core\Logger\Factory;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger; use Psr\Log\NullLogger;
@ -17,14 +18,31 @@ use Psr\Log\NullLogger;
*/ */
final class LoggerFactory final class LoggerFactory
{ {
private bool $debug;
private LoggerInterface $logger; private LoggerInterface $logger;
public function __construct(IManageConfigValues $config)
{
$this->debug = (bool) $config->get('system', 'debugging') ?? false;
}
public function create(): LoggerInterface public function create(): LoggerInterface
{ {
if (! isset($this->logger)) { if (! isset($this->logger)) {
$this->logger = new NullLogger(); $this->logger = $this->createLogger();
} }
return $this->logger; return $this->logger;
} }
private function createLogger(): LoggerInterface
{
// Always return NullLogger if debug is disabled
if ($this->debug === false) {
return new NullLogger();
}
return new NullLogger();
}
} }

View file

@ -9,23 +9,35 @@ declare(strict_types=1);
namespace Friendica\Test\Unit\Core\Logger\Factory; namespace Friendica\Test\Unit\Core\Logger\Factory;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Logger\Factory\LoggerFactory; use Friendica\Core\Logger\Factory\LoggerFactory;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
class LoggerFactoryTest extends TestCase class LoggerFactoryTest extends TestCase
{ {
public function testLoggerFactoryCreateReturnsPsrLogger(): void public function testCreateReturnsPsrLogger(): void
{ {
$factory = new LoggerFactory(); $factory = new LoggerFactory($this->createStub(IManageConfigValues::class));
$this->assertInstanceOf(LoggerInterface::class, $factory->create()); $this->assertInstanceOf(LoggerInterface::class, $factory->create());
} }
public function testLoggerFactoryCreateReturnsSameObject(): void public function testCreateReturnsSameObject(): void
{ {
$factory = new LoggerFactory(); $factory = new LoggerFactory($this->createStub(IManageConfigValues::class));
$this->assertSame($factory->create(), $factory->create()); $this->assertSame($factory->create(), $factory->create());
} }
public function testCreateWithDebugDisabledReturnsNullLogger(): void
{
$config = $this->createStub(IManageConfigValues::class);
$config->method('get')->willReturn(false);
$factory = new LoggerFactory($config);
$this->assertInstanceOf(NullLogger::class, $factory->create());
}
} }