Add Feedback :-)

This commit is contained in:
Philipp
2021-10-29 08:03:59 +02:00
parent 409d909d0f
commit f4ea74447e
14 changed files with 80 additions and 44 deletions

View 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);
}
}

View File

@@ -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;
}

View File

@@ -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];

View File

@@ -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];

View File

@@ -415,11 +415,11 @@ abstract class DI
//
/**
* @return Network\HTTPClient\Capability\ICanRequestPerHttp
* @return Network\HTTPClient\Capability\ICanSendHttpRequests
*/
public static function httpClient()
{
return self::$dice->create(Network\HTTPClient\Capability\ICanRequestPerHttp::class);
return self::$dice->create(Network\HTTPClient\Capability\ICanSendHttpRequests::class);
}
//

View File

@@ -26,7 +26,7 @@ use GuzzleHttp\Exception\TransferException;
/**
* Interface for calling HTTP requests and returning their responses
*/
interface ICanRequestPerHttp
interface ICanSendHttpRequests
{
/**
* Fetches the content of an URL

View File

@@ -24,7 +24,7 @@ namespace Friendica\Network\HTTPClient\Client;
use Friendica\Core\System;
use Friendica\Network\HTTPClient\Response\CurlResult;
use Friendica\Network\HTTPClient\Response\GuzzleResponse;
use Friendica\Network\HTTPClient\Capability\ICanRequestPerHttp;
use Friendica\Network\HTTPClient\Capability\ICanSendHttpRequests;
use Friendica\Network\HTTPClient\Capability\ICanHandleHttpResponses;
use Friendica\Network\HTTPException\InternalServerErrorException;
use Friendica\Util\Network;
@@ -42,7 +42,7 @@ use Psr\Log\LoggerInterface;
/**
* Performs HTTP requests to a given URL
*/
class HttpClientCan implements ICanRequestPerHttp
class HttpClient implements ICanSendHttpRequests
{
/** @var LoggerInterface */
private $logger;

View File

@@ -6,7 +6,7 @@ use Friendica\App;
use Friendica\BaseFactory;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Network\HTTPClient\Client;
use Friendica\Network\HTTPClient\Capability\ICanRequestPerHttp;
use Friendica\Network\HTTPClient\Capability\ICanSendHttpRequests;
use Friendica\Util\Profiler;
use Friendica\Util\Strings;
use GuzzleHttp;
@@ -42,9 +42,9 @@ class HttpClient extends BaseFactory
*
* @param HandlerStack|null $handlerStack (optional) A handler replacement (just usefull at test environments)
*
* @return ICanRequestPerHttp
* @return ICanSendHttpRequests
*/
public function createClient(HandlerStack $handlerStack = null): ICanRequestPerHttp
public function createClient(HandlerStack $handlerStack = null): ICanSendHttpRequests
{
$proxy = $this->config->get('system', 'proxy');
@@ -108,6 +108,6 @@ class HttpClient extends BaseFactory
// Some websites test the browser for cookie support, so this enhances results.
$resolver->setCookieJar(get_temppath() .'/resolver-cookie-' . Strings::getRandomName(10));
return new Client\HttpClientCan($logger, $this->profiler, $guzzle, $resolver);
return new Client\HttpClient($logger, $this->profiler, $guzzle, $resolver);
}
}