Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
<?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
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user