mirror of
https://github.com/friendica/friendica
synced 2025-02-13 18:14:01 +00:00
Merge pull request #14758 from Art4/hard-deprecate-logger
Hard deprecate `Friendica\Core\Logger`
This commit is contained in:
commit
7b0e31714f
4 changed files with 44 additions and 13 deletions
|
@ -210,9 +210,9 @@ If the deprecated code is no longer used inside Friendica or the official addons
|
|||
The code MUST NOT be deleted.
|
||||
Starting from the next release, it MUST be stay for at least 5 months.
|
||||
Hard deprecated code COULD remain longer than 5 months, depending on when a release appears.
|
||||
Addon developer MUST NOT consider that they have more than 5 months to adjust their code.
|
||||
Addon developer SHOULD NOT consider that they have more than 5 months to adjust their code.
|
||||
|
||||
Hard deprecation code means that the code triggers an `E_USER_DEPRECATION` error if it is called.
|
||||
Hard deprecation code means that the code triggers a muted `E_USER_DEPRECATION` error if it is called.
|
||||
For instance with the deprecated class `Friendica\Core\Logger` the call of every method should trigger an error:
|
||||
|
||||
```php
|
||||
|
@ -224,7 +224,7 @@ For instance with the deprecated class `Friendica\Core\Logger` the call of every
|
|||
class Logger {
|
||||
public static function info(string $message, array $context = [])
|
||||
{
|
||||
trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.05 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
@trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.05 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
self::getInstance()->info($message, $context);
|
||||
}
|
||||
|
@ -233,7 +233,7 @@ class Logger {
|
|||
}
|
||||
```
|
||||
|
||||
This way the maintainer or users of addons will be notified that the addon will stop working in one of the next releases.
|
||||
This way the maintainer or users of addons will be notified in the logs that the addon will stop working in one of the next releases.
|
||||
The addon maintainer now has at least 5 months or at least one release to fix the deprecations.
|
||||
|
||||
Please note that the deprecation message contains the release that will be released next.
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
namespace Friendica\Core;
|
||||
|
||||
use Friendica\DI;
|
||||
use Friendica\Core\Logger\Type\WorkerLogger;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
|
@ -18,10 +17,7 @@ use Psr\Log\LoggerInterface;
|
|||
*/
|
||||
class Logger
|
||||
{
|
||||
/**
|
||||
* @return LoggerInterface|WorkerLogger
|
||||
*/
|
||||
private static function getInstance()
|
||||
private static function getInstance(): LoggerInterface
|
||||
{
|
||||
return DI::logger();
|
||||
}
|
||||
|
@ -38,6 +34,8 @@ class Logger
|
|||
*/
|
||||
public static function emergency(string $message, array $context = [])
|
||||
{
|
||||
@trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.02 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
self::getInstance()->emergency($message, $context);
|
||||
}
|
||||
|
||||
|
@ -55,6 +53,8 @@ class Logger
|
|||
*/
|
||||
public static function alert(string $message, array $context = [])
|
||||
{
|
||||
@trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.02 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
self::getInstance()->alert($message, $context);
|
||||
}
|
||||
|
||||
|
@ -71,6 +71,8 @@ class Logger
|
|||
*/
|
||||
public static function critical(string $message, array $context = [])
|
||||
{
|
||||
@trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.02 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
self::getInstance()->critical($message, $context);
|
||||
}
|
||||
|
||||
|
@ -86,6 +88,8 @@ class Logger
|
|||
*/
|
||||
public static function error(string $message, array $context = [])
|
||||
{
|
||||
@trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.02 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
self::getInstance()->error($message, $context);
|
||||
}
|
||||
|
||||
|
@ -103,6 +107,8 @@ class Logger
|
|||
*/
|
||||
public static function warning(string $message, array $context = [])
|
||||
{
|
||||
@trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.02 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
self::getInstance()->warning($message, $context);
|
||||
}
|
||||
|
||||
|
@ -117,6 +123,8 @@ class Logger
|
|||
*/
|
||||
public static function notice(string $message, array $context = [])
|
||||
{
|
||||
@trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.02 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
self::getInstance()->notice($message, $context);
|
||||
}
|
||||
|
||||
|
@ -134,6 +142,8 @@ class Logger
|
|||
*/
|
||||
public static function info(string $message, array $context = [])
|
||||
{
|
||||
@trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.02 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
self::getInstance()->info($message, $context);
|
||||
}
|
||||
|
||||
|
@ -148,6 +158,8 @@ class Logger
|
|||
*/
|
||||
public static function debug(string $message, array $context = [])
|
||||
{
|
||||
@trigger_error('Class `' . __CLASS__ . '` is deprecated since 2025.02 and will be removed after 5 months, use constructor injection or `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
self::getInstance()->debug($message, $context);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -197,7 +197,7 @@ class ErrorHandler
|
|||
E_STRICT => LogLevel::NOTICE,
|
||||
E_RECOVERABLE_ERROR => LogLevel::ERROR,
|
||||
E_DEPRECATED => LogLevel::NOTICE,
|
||||
E_USER_DEPRECATED => LogLevel::NOTICE,
|
||||
E_USER_DEPRECATED => LogLevel::WARNING,
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -248,17 +248,29 @@ class ErrorHandler
|
|||
*/
|
||||
public function handleError(int $code, string $message, string $file = '', int $line = 0, ?array $context = []): bool
|
||||
{
|
||||
if ($this->handleOnlyReportedErrors && !(error_reporting() & $code)) {
|
||||
if ($this->handleOnlyReportedErrors && !(error_reporting() & $code) && $code !== E_USER_DEPRECATED) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||
|
||||
array_shift($trace); // Exclude handleError from trace
|
||||
|
||||
if ($code === E_USER_DEPRECATED && $trace[0]['function'] ?? '' === 'trigger_error') {
|
||||
$calledPlace = $trace[1] ?? [];
|
||||
|
||||
$message .= sprintf(
|
||||
' It was called in `%s`%s.',
|
||||
$calledPlace['file'],
|
||||
isset($calledPlace['line']) ? ' in line ' . $calledPlace['line'] : ''
|
||||
);
|
||||
}
|
||||
|
||||
// fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries
|
||||
if (!$this->hasFatalErrorHandler || !in_array($code, self::$fatalErrors, true)) {
|
||||
$level = $this->errorLevelMap[$code] ?? LogLevel::CRITICAL;
|
||||
$this->logger->log($level, self::codeToString($code).': '.$message, ['code' => $code, 'message' => $message, 'file' => $file, 'line' => $line]);
|
||||
} else {
|
||||
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||
array_shift($trace); // Exclude handleError from trace
|
||||
$this->lastFatalTrace = $trace;
|
||||
}
|
||||
|
||||
|
|
|
@ -332,9 +332,16 @@ abstract class DI
|
|||
*/
|
||||
public static function workerLogger()
|
||||
{
|
||||
@trigger_error('`' . __METHOD__ . '()` is deprecated since 2025.02 and will be removed after 5 months, use `DI::logger()` instead.', E_USER_DEPRECATED);
|
||||
|
||||
return self::$dice->create(Core\Logger\Type\WorkerLogger::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal Only for use in Friendica\Core\Worker class
|
||||
*
|
||||
* @see Friendica\Core\Worker::execFunction()
|
||||
*/
|
||||
public static function loggerManager(): LoggerManager
|
||||
{
|
||||
return self::$dice->create(LoggerManager::class);
|
||||
|
|
Loading…
Add table
Reference in a new issue