mirror of
https://github.com/friendica/friendica
synced 2025-04-26 21:50:11 +00:00
Add Feedback :-)
This commit is contained in:
parent
409d909d0f
commit
f4ea74447e
14 changed files with 80 additions and 44 deletions
13
src/Core/Logger/Exception/LogLevelException.php
Normal file
13
src/Core/Logger/Exception/LogLevelException.php
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace Friendica\Core\Logger\Exception;
|
||||
|
||||
use Throwable;
|
||||
|
||||
class LogLevelException extends \InvalidArgumentException
|
||||
{
|
||||
public function __construct($message = "", Throwable $previous = null)
|
||||
{
|
||||
parent::__construct($message, 500, $previous);
|
||||
}
|
||||
}
|
|
@ -24,6 +24,7 @@ namespace Friendica\Core\Logger\Factory;
|
|||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||
use Friendica\Core\Logger\Exception\LoggerException;
|
||||
use Friendica\Core;
|
||||
use Friendica\Core\Logger\Exception\LogLevelException;
|
||||
use Friendica\Database\Database;
|
||||
use Friendica\Util\FileSystem;
|
||||
use Friendica\Util\Introspection;
|
||||
|
@ -54,7 +55,6 @@ class Logger
|
|||
Core\Logger::class,
|
||||
Profiler::class,
|
||||
'Friendica\\Core\\Logger\\Type',
|
||||
'Friendica\\Core\\Logger\\Type\\Monolog',
|
||||
];
|
||||
|
||||
/** @var string The log-channel (app, worker, ...) */
|
||||
|
@ -72,10 +72,11 @@ class Logger
|
|||
* @param IManageConfigValues $config The config
|
||||
* @param Profiler $profiler The profiler of the app
|
||||
* @param FileSystem $fileSystem FileSystem utils
|
||||
* @param string|null $minLevel (optional) Override minimum Loglevel to log
|
||||
*
|
||||
* @return LoggerInterface The PSR-3 compliant logger instance
|
||||
*/
|
||||
public function create(Database $database, IManageConfigValues $config, Profiler $profiler, FileSystem $fileSystem): LoggerInterface
|
||||
public function create(Database $database, IManageConfigValues $config, Profiler $profiler, FileSystem $fileSystem, ?string $minLevel = null): LoggerInterface
|
||||
{
|
||||
if (empty($config->get('system', 'debugging', false))) {
|
||||
$logger = new NullLogger();
|
||||
|
@ -84,8 +85,8 @@ class Logger
|
|||
}
|
||||
|
||||
$introspection = new Introspection(self::$ignoreClassList);
|
||||
$level = $config->get('system', 'loglevel');
|
||||
$loglevel = self::mapLegacyConfigDebugLevel((string)$level);
|
||||
$minLevel = $minLevel ?? $config->get('system', 'loglevel');
|
||||
$loglevel = self::mapLegacyConfigDebugLevel((string)$minLevel);
|
||||
|
||||
switch ($config->get('system', 'logger_config', 'stream')) {
|
||||
case 'monolog':
|
||||
|
@ -106,8 +107,12 @@ class Logger
|
|||
static::addStreamHandler($logger, $stream, $loglevel);
|
||||
} catch (\Throwable $e) {
|
||||
// No Logger ..
|
||||
/// @todo isn't it possible to give the admin any hint about this wrong configuration?
|
||||
$logger = new NullLogger();
|
||||
try {
|
||||
$logger = new SyslogLogger($this->channel, $introspection, $loglevel);
|
||||
} catch (\Throwable $e) {
|
||||
// No logger ...
|
||||
$logger = new NullLogger();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -115,9 +120,12 @@ class Logger
|
|||
case 'syslog':
|
||||
try {
|
||||
$logger = new SyslogLogger($this->channel, $introspection, $loglevel);
|
||||
} catch (LogLevelException $exception) {
|
||||
// If there's a wrong config value for loglevel, try again with standard
|
||||
$logger = $this->create($database, $config, $profiler, $fileSystem, LogLevel::NOTICE);
|
||||
$logger->warning('Invalid loglevel set in config.', ['loglevel' => $loglevel]);
|
||||
} catch (\Throwable $e) {
|
||||
// No logger ...
|
||||
/// @todo isn't it possible to give the admin any hint about this wrong configuration?
|
||||
$logger = new NullLogger();
|
||||
}
|
||||
break;
|
||||
|
@ -129,14 +137,25 @@ class Logger
|
|||
if (!is_file($stream) || is_writable($stream)) {
|
||||
try {
|
||||
$logger = new StreamLogger($this->channel, $stream, $introspection, $fileSystem, $loglevel);
|
||||
} catch (LogLevelException $exception) {
|
||||
// If there's a wrong config value for loglevel, try again with standard
|
||||
$logger = $this->create($database, $config, $profiler, $fileSystem, LogLevel::NOTICE);
|
||||
$logger->warning('Invalid loglevel set in config.', ['loglevel' => $loglevel]);
|
||||
} catch (\Throwable $t) {
|
||||
// No logger ...
|
||||
/// @todo isn't it possible to give the admin any hint about this wrong configuration?
|
||||
$logger = new NullLogger();
|
||||
}
|
||||
} else {
|
||||
/// @todo isn't it possible to give the admin any hint about this wrong configuration?
|
||||
$logger = new NullLogger();
|
||||
try {
|
||||
$logger = new SyslogLogger($this->channel, $introspection, $loglevel);
|
||||
} catch (LogLevelException $exception) {
|
||||
// If there's a wrong config value for loglevel, try again with standard
|
||||
$logger = $this->create($database, $config, $profiler, $fileSystem, LogLevel::NOTICE);
|
||||
$logger->warning('Invalid loglevel set in config.', ['loglevel' => $loglevel]);
|
||||
} catch (\Throwable $e) {
|
||||
// No logger ...
|
||||
$logger = new NullLogger();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ namespace Friendica\Core\Logger\Type;
|
|||
|
||||
use Friendica\Core\Logger\Exception\LoggerArgumentException;
|
||||
use Friendica\Core\Logger\Exception\LoggerException;
|
||||
use Friendica\Core\Logger\Exception\LogLevelException;
|
||||
use Friendica\Util\DateTimeFormat;
|
||||
use Friendica\Util\FileSystem;
|
||||
use Friendica\Util\Introspection;
|
||||
|
@ -83,6 +84,7 @@ class StreamLogger extends AbstractLogger
|
|||
* @param string $level The minimum loglevel at which this logger will be triggered
|
||||
*
|
||||
* @throws LoggerArgumentException
|
||||
* @throws LogLevelException
|
||||
*/
|
||||
public function __construct($channel, $stream, Introspection $introspection, FileSystem $fileSystem, string $level = LogLevel::DEBUG)
|
||||
{
|
||||
|
@ -102,7 +104,7 @@ class StreamLogger extends AbstractLogger
|
|||
if (array_key_exists($level, $this->levelToInt)) {
|
||||
$this->logLevel = $this->levelToInt[$level];
|
||||
} else {
|
||||
throw new LoggerArgumentException(sprintf('The level "%s" is not valid.', $level));
|
||||
throw new LogLevelException(sprintf('The level "%s" is not valid.', $level));
|
||||
}
|
||||
|
||||
$this->checkStream();
|
||||
|
@ -127,12 +129,12 @@ class StreamLogger extends AbstractLogger
|
|||
* @return void
|
||||
*
|
||||
* @throws LoggerException
|
||||
* @throws LoggerArgumentException
|
||||
* @throws LogLevelException
|
||||
*/
|
||||
protected function addEntry($level, string $message, array $context = [])
|
||||
{
|
||||
if (!array_key_exists($level, $this->levelToInt)) {
|
||||
throw new LoggerArgumentException(sprintf('The level "%s" is not valid.', $level));
|
||||
throw new LogLevelException(sprintf('The level "%s" is not valid.', $level));
|
||||
}
|
||||
|
||||
$logLevel = $this->levelToInt[$level];
|
||||
|
|
|
@ -21,10 +21,9 @@
|
|||
|
||||
namespace Friendica\Core\Logger\Type;
|
||||
|
||||
use Friendica\Core\Logger\Exception\LoggerArgumentException;
|
||||
use Friendica\Core\Logger\Exception\LoggerException;
|
||||
use Friendica\Core\Logger\Exception\LogLevelException;
|
||||
use Friendica\Util\Introspection;
|
||||
use Psr\Log\InvalidArgumentException;
|
||||
use Psr\Log\LogLevel;
|
||||
|
||||
/**
|
||||
|
@ -99,7 +98,8 @@ class SyslogLogger extends AbstractLogger
|
|||
* @param int $logOpts Indicates what logging options will be used when generating a log message
|
||||
* @param int $logFacility Used to specify what type of program is logging the message
|
||||
*
|
||||
* @throws LoggerArgumentException
|
||||
* @throws LogLevelException
|
||||
* @throws LoggerException
|
||||
*/
|
||||
public function __construct($channel, Introspection $introspection, string $level = LogLevel::NOTICE, int $logOpts = LOG_PID, int $logFacility = LOG_USER)
|
||||
{
|
||||
|
@ -117,7 +117,7 @@ class SyslogLogger extends AbstractLogger
|
|||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @throws LoggerArgumentException in case the level isn't valid
|
||||
* @throws LogLevelException in case the level isn't valid
|
||||
* @throws LoggerException In case the syslog cannot be opened for writing
|
||||
*/
|
||||
protected function addEntry($level, string $message, array $context = [])
|
||||
|
@ -139,12 +139,12 @@ class SyslogLogger extends AbstractLogger
|
|||
*
|
||||
* @return int The SysLog priority
|
||||
*
|
||||
* @throws LoggerArgumentException If the loglevel isn't valid
|
||||
* @throws LogLevelException If the loglevel isn't valid
|
||||
*/
|
||||
public function mapLevelToPriority(string $level): int
|
||||
{
|
||||
if (!array_key_exists($level, $this->logLevels)) {
|
||||
throw new LoggerArgumentException(sprintf('The level "%s" is not valid.', $level));
|
||||
throw new LogLevelException(sprintf('The level "%s" is not valid.', $level));
|
||||
}
|
||||
|
||||
return $this->logLevels[$level];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue