mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-15 04:27: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
|
|
);
|
|
}
|
|
}
|