mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-16 13:07:14 +01:00
78 lines
2.0 KiB
PHP
78 lines
2.0 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Xentral\Modules\Log\Service;
|
||
|
|
||
|
use Xentral\Components\Logger\LogLevel;
|
||
|
use Xentral\Modules\Log\Exception\InvalidArgumentException;
|
||
|
use Xentral\Modules\Log\Exception\InvalidLoglevelException;
|
||
|
use Xentral\Modules\Log\Wrapper\CompanyConfigWrapper;
|
||
|
|
||
|
final class LoggerConfigService
|
||
|
{
|
||
|
/** @var string CONFIG_KEY_LEVEL */
|
||
|
private const CONFIG_KEY_LEVEL = 'logfile_logging_level';
|
||
|
|
||
|
/** @var CompanyConfigWrapper $db */
|
||
|
private $companyConfig;
|
||
|
|
||
|
/**
|
||
|
* @param CompanyConfigWrapper $companyConfig
|
||
|
*/
|
||
|
public function __construct(CompanyConfigWrapper $companyConfig)
|
||
|
{
|
||
|
$this->companyConfig = $companyConfig;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @throws InvalidLoglevelException
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getLogLevel(): string
|
||
|
{
|
||
|
$level = (string)$this->companyConfig->get(self::CONFIG_KEY_LEVEL);
|
||
|
$level = strtolower($level);
|
||
|
if (!$this->isAllowedLogLevel($level)) {
|
||
|
throw new InvalidLoglevelException(sprintf('Unrecognized Loglevel "%s".', $level));
|
||
|
}
|
||
|
|
||
|
return $level;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $level
|
||
|
*
|
||
|
* @throws InvalidLoglevelException
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function setLogLevel(string $level): void
|
||
|
{
|
||
|
if (!$this->isAllowedLogLevel($level)) {
|
||
|
throw new InvalidArgumentException(sprintf('Unrecognised Loglevel "%s"', $level));
|
||
|
}
|
||
|
$this->companyConfig->set(self::CONFIG_KEY_LEVEL, $level);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $level
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function isAllowedLogLevel(string $level): bool
|
||
|
{
|
||
|
return (
|
||
|
$level === LogLevel::DEBUG
|
||
|
|| $level === LogLevel::INFO
|
||
|
|| $level === LogLevel::NOTICE
|
||
|
|| $level === LogLevel::WARNING
|
||
|
|| $level === LogLevel::ERROR
|
||
|
|| $level === LogLevel::CRITICAL
|
||
|
|| $level === LogLevel::ALERT
|
||
|
|| $level === LogLevel::EMERGENCY
|
||
|
);
|
||
|
}
|
||
|
}
|