1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-03 11:47:38 +02:00
This commit is contained in:
Jordi Boggiano
2024-06-28 10:48:40 +02:00
parent 3ba77d1d39
commit 07cd08e0e4
34 changed files with 106 additions and 91 deletions

View File

@@ -124,8 +124,8 @@ class ErrorHandler
} }
/** /**
* @param LogLevel::*|null $level a LogLevel::* constant, null to use the default LogLevel::ALERT * @param LogLevel::*|null $level a LogLevel::* constant, null to use the default LogLevel::ALERT
* @param int $reservedMemorySize Amount of KBs to reserve in memory so that it can be freed when handling fatal errors giving Monolog some room in memory to get its job done * @param int $reservedMemorySize Amount of KBs to reserve in memory so that it can be freed when handling fatal errors giving Monolog some room in memory to get its job done
* @return $this * @return $this
*/ */
public function registerFatalHandler($level = null, int $reservedMemorySize = 20): self public function registerFatalHandler($level = null, int $reservedMemorySize = 20): self

View File

@@ -42,7 +42,7 @@ class HtmlFormatter extends NormalizerFormatter
} }
/** /**
* @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format * @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format
* @throws \RuntimeException If the function json_encode does not exist * @throws \RuntimeException If the function json_encode does not exist
*/ */
public function __construct(?string $dateFormat = null) public function __construct(?string $dateFormat = null)

View File

@@ -84,7 +84,7 @@ class LineFormatter extends NormalizerFormatter
/** /**
* Indent stack traces to separate them a bit from the main log record messages * Indent stack traces to separate them a bit from the main log record messages
* *
* @param string $indent The string used to indent, for example " " * @param string $indent The string used to indent, for example " "
* @return $this * @return $this
*/ */
public function indentStacktraces(string $indent): self public function indentStacktraces(string $indent): self
@@ -117,7 +117,7 @@ class LineFormatter extends NormalizerFormatter
/** /**
* Allows cutting the level name to get fixed-length levels like INF for INFO, ERR for ERROR if you set this to 3 for example * Allows cutting the level name to get fixed-length levels like INF for INFO, ERR for ERROR if you set this to 3 for example
* *
* @param int|null $maxLevelNameLength Maximum characters for the level name. Set null for infinite length (default) * @param int|null $maxLevelNameLength Maximum characters for the level name. Set null for infinite length (default)
* @return $this * @return $this
*/ */
public function setMaxLevelNameLength(?int $maxLevelNameLength = null): self public function setMaxLevelNameLength(?int $maxLevelNameLength = null): self
@@ -244,6 +244,7 @@ class LineFormatter extends NormalizerFormatter
$str = preg_replace('/(?<!\\\\)\\\\[rn]/', "\n", $str); $str = preg_replace('/(?<!\\\\)\\\\[rn]/', "\n", $str);
if (null === $str) { if (null === $str) {
$pcreErrorCode = preg_last_error(); $pcreErrorCode = preg_last_error();
throw new \RuntimeException('Failed to run preg_replace: ' . $pcreErrorCode . ' / ' . Utils::pcreLastErrorMessage($pcreErrorCode)); throw new \RuntimeException('Failed to run preg_replace: ' . $pcreErrorCode . ' / ' . Utils::pcreLastErrorMessage($pcreErrorCode));
} }
} }

View File

@@ -34,7 +34,7 @@ class NormalizerFormatter implements FormatterInterface
protected string $basePath = ''; protected string $basePath = '';
/** /**
* @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format * @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format
* @throws \RuntimeException If the function json_encode does not exist * @throws \RuntimeException If the function json_encode does not exist
*/ */
public function __construct(?string $dateFormat = null) public function __construct(?string $dateFormat = null)

View File

@@ -44,7 +44,6 @@ class SyslogFormatter extends LineFormatter
} }
/** /**
* @param LogRecord $record
* @return array<string, mixed> * @return array<string, mixed>
*/ */
private function formatExtra(LogRecord $record): array private function formatExtra(LogRecord $record): array

View File

@@ -29,7 +29,7 @@ abstract class AbstractHandler extends Handler implements ResettableInterface
/** /**
* @param int|string|Level|LogLevel::* $level The minimum logging level at which this handler will be triggered * @param int|string|Level|LogLevel::* $level The minimum logging level at which this handler will be triggered
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level
*/ */
@@ -50,7 +50,7 @@ abstract class AbstractHandler extends Handler implements ResettableInterface
/** /**
* Sets minimum logging level at which this handler will be triggered. * Sets minimum logging level at which this handler will be triggered.
* *
* @param Level|LogLevel::* $level Level or level name * @param Level|LogLevel::* $level Level or level name
* @return $this * @return $this
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level
@@ -73,8 +73,8 @@ abstract class AbstractHandler extends Handler implements ResettableInterface
/** /**
* Sets the bubbling behavior. * Sets the bubbling behavior.
* *
* @param bool $bubble true means that this handler allows bubbling. * @param bool $bubble true means that this handler allows bubbling.
* false means that bubbling is not permitted. * false means that bubbling is not permitted.
* @return $this * @return $this
*/ */
public function setBubble(bool $bubble): self public function setBubble(bool $bubble): self

View File

@@ -56,7 +56,7 @@ class AmqpHandler extends AbstractProcessingHandler
/** /**
* Configure extra attributes to pass to the AMQPExchange (if you are using the amqp extension) * Configure extra attributes to pass to the AMQPExchange (if you are using the amqp extension)
* *
* @param array<string, mixed> $extraAttributes One of content_type, content_encoding, * @param array<string, mixed> $extraAttributes One of content_type, content_encoding,
* message_id, user_id, app_id, delivery_mode, * message_id, user_id, app_id, delivery_mode,
* priority, timestamp, expiration, type * priority, timestamp, expiration, type
* or reply_to, headers. * or reply_to, headers.
@@ -65,6 +65,7 @@ class AmqpHandler extends AbstractProcessingHandler
public function setExtraAttributes(array $extraAttributes): self public function setExtraAttributes(array $extraAttributes): self
{ {
$this->extraAttributes = $extraAttributes; $this->extraAttributes = $extraAttributes;
return $this; return $this;
} }
@@ -155,6 +156,7 @@ class AmqpHandler extends AbstractProcessingHandler
if (\count($this->extraAttributes) > 0) { if (\count($this->extraAttributes) > 0) {
$attributes = array_merge($attributes, $this->extraAttributes); $attributes = array_merge($attributes, $this->extraAttributes);
} }
return new AMQPMessage($data, $attributes); return new AMQPMessage($data, $attributes);
} }

View File

@@ -17,7 +17,6 @@ use Monolog\Utils;
use Monolog\LogRecord; use Monolog\LogRecord;
use Monolog\Level; use Monolog\Level;
use function count;
use function headers_list; use function headers_list;
use function stripos; use function stripos;

View File

@@ -46,11 +46,11 @@ class DeduplicationHandler extends BufferHandler
protected bool $gc = false; protected bool $gc = false;
/** /**
* @param HandlerInterface $handler Handler. * @param HandlerInterface $handler Handler.
* @param string|null $deduplicationStore The file/path where the deduplication log should be kept * @param string|null $deduplicationStore The file/path where the deduplication log should be kept
* @param int|string|Level|LogLevel::* $deduplicationLevel The minimum logging level for log records to be looked at for deduplication purposes * @param int|string|Level|LogLevel::* $deduplicationLevel The minimum logging level for log records to be looked at for deduplication purposes
* @param int $time The period (in seconds) during which duplicate entries should be suppressed after a given log is sent through * @param int $time The period (in seconds) during which duplicate entries should be suppressed after a given log is sent through
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $deduplicationLevel * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $deduplicationLevel
*/ */

View File

@@ -54,10 +54,10 @@ class FilterHandler extends Handler implements ProcessableHandlerInterface, Rese
/** /**
* @phpstan-param (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface $handler * @phpstan-param (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface $handler
* *
* @param Closure|HandlerInterface $handler Handler or factory Closure($record|null, $filterHandler). * @param Closure|HandlerInterface $handler Handler or factory Closure($record|null, $filterHandler).
* @param int|string|Level|array<int|string|Level|LogLevel::*> $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided * @param int|string|Level|array<int|string|Level|LogLevel::*> $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided
* @param int|string|Level|LogLevel::* $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array * @param int|string|Level|LogLevel::* $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*|array<value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*> $minLevelOrList * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*|array<value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*> $minLevelOrList
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $maxLevel * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $maxLevel
@@ -78,8 +78,8 @@ class FilterHandler extends Handler implements ProcessableHandlerInterface, Rese
} }
/** /**
* @param int|string|Level|LogLevel::*|array<int|string|Level|LogLevel::*> $minLevelOrList A list of levels to accept or a minimum level or level name if maxLevel is provided * @param int|string|Level|LogLevel::*|array<int|string|Level|LogLevel::*> $minLevelOrList A list of levels to accept or a minimum level or level name if maxLevel is provided
* @param int|string|Level|LogLevel::* $maxLevel Maximum level or level name to accept, only used if $minLevelOrList is not an array * @param int|string|Level|LogLevel::* $maxLevel Maximum level or level name to accept, only used if $minLevelOrList is not an array
* @return $this * @return $this
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*|array<value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*> $minLevelOrList * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*|array<value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*> $minLevelOrList

View File

@@ -66,11 +66,11 @@ class FingersCrossedHandler extends Handler implements ProcessableHandlerInterfa
/** /**
* @phpstan-param (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface $handler * @phpstan-param (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface $handler
* *
* @param Closure|HandlerInterface $handler Handler or factory Closure($record|null, $fingersCrossedHandler). * @param Closure|HandlerInterface $handler Handler or factory Closure($record|null, $fingersCrossedHandler).
* @param int|string|Level|LogLevel::* $activationStrategy Strategy which determines when this handler takes action, or a level name/value at which the handler is activated * @param int|string|Level|LogLevel::* $activationStrategy Strategy which determines when this handler takes action, or a level name/value at which the handler is activated
* @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer. * @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
* @param bool $stopBuffering Whether the handler should stop buffering after being triggered (default true) * @param bool $stopBuffering Whether the handler should stop buffering after being triggered (default true)
* @param int|string|Level|LogLevel::*|null $passthruLevel Minimum level to always flush to handler on close, even if strategy not triggered * @param int|string|Level|LogLevel::*|null $passthruLevel Minimum level to always flush to handler on close, even if strategy not triggered
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*|ActivationStrategyInterface $activationStrategy * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::*|ActivationStrategyInterface $activationStrategy

View File

@@ -45,7 +45,7 @@ interface HandlerInterface
* *
* @param LogRecord $record The record to handle * @param LogRecord $record The record to handle
* @return bool true means that this handler handled the record, and that bubbling is not permitted. * @return bool true means that this handler handled the record, and that bubbling is not permitted.
* false means the record was either not processed or that this handler allows bubbling. * false means the record was either not processed or that this handler allows bubbling.
*/ */
public function handle(LogRecord $record): bool; public function handle(LogRecord $record): bool;

View File

@@ -14,7 +14,6 @@ namespace Monolog\Handler;
use Monolog\Level; use Monolog\Level;
use Monolog\Formatter\FormatterInterface; use Monolog\Formatter\FormatterInterface;
use Monolog\Formatter\LogglyFormatter; use Monolog\Formatter\LogglyFormatter;
use function array_key_exists;
use CurlHandle; use CurlHandle;
use Monolog\LogRecord; use Monolog\LogRecord;
@@ -88,7 +87,7 @@ class LogglyHandler extends AbstractProcessingHandler
} }
/** /**
* @param string[]|string $tag * @param string[]|string $tag
* @return $this * @return $this
*/ */
public function setTag(string|array $tag): self public function setTag(string|array $tag): self
@@ -103,7 +102,7 @@ class LogglyHandler extends AbstractProcessingHandler
} }
/** /**
* @param string[]|string $tag * @param string[]|string $tag
* @return $this * @return $this
*/ */
public function addTag(string|array $tag): self public function addTag(string|array $tag): self

View File

@@ -78,7 +78,7 @@ class NativeMailerHandler extends MailHandler
/** /**
* Add headers to the message * Add headers to the message
* *
* @param string|string[] $headers Custom added headers * @param string|string[] $headers Custom added headers
* @return $this * @return $this
*/ */
public function addHeader($headers): self public function addHeader($headers): self
@@ -96,7 +96,7 @@ class NativeMailerHandler extends MailHandler
/** /**
* Add parameters to the message * Add parameters to the message
* *
* @param string|string[] $parameters Custom added parameters * @param string|string[] $parameters Custom added parameters
* @return $this * @return $this
*/ */
public function addParameter($parameters): self public function addParameter($parameters): self
@@ -143,7 +143,7 @@ class NativeMailerHandler extends MailHandler
} }
/** /**
* @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML messages. * @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML messages.
* @return $this * @return $this
*/ */
public function setContentType(string $contentType): self public function setContentType(string $contentType): self

View File

@@ -88,9 +88,9 @@ class PushoverHandler extends SocketHandler
* to be retried for (every retry seconds). * to be retried for (every retry seconds).
* *
* @param int|string|Level|LogLevel::* $highPriorityLevel The minimum logging level at which this handler will start * @param int|string|Level|LogLevel::* $highPriorityLevel The minimum logging level at which this handler will start
* sending "high priority" requests to the Pushover API * sending "high priority" requests to the Pushover API
* @param int|string|Level|LogLevel::* $emergencyLevel The minimum logging level at which this handler will start * @param int|string|Level|LogLevel::* $emergencyLevel The minimum logging level at which this handler will start
* sending "emergency" requests to the Pushover API * sending "emergency" requests to the Pushover API
* *
* *
* @phpstan-param string|array<int|string> $users * @phpstan-param string|array<int|string> $users
@@ -207,7 +207,7 @@ class PushoverHandler extends SocketHandler
} }
/** /**
* @param int|string|Level|LogLevel::* $level * @param int|string|Level|LogLevel::* $level
* @return $this * @return $this
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level
@@ -220,7 +220,7 @@ class PushoverHandler extends SocketHandler
} }
/** /**
* @param int|string|Level|LogLevel::* $level * @param int|string|Level|LogLevel::* $level
* @return $this * @return $this
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level

View File

@@ -182,8 +182,8 @@ class RotatingFileHandler extends StreamHandler
[$fileInfo['filename'], str_replace( [$fileInfo['filename'], str_replace(
['Y', 'y', 'm', 'd'], ['Y', 'y', 'm', 'd'],
['[0-9][0-9][0-9][0-9]', '[0-9][0-9]', '[0-9][0-9]', '[0-9][0-9]'], ['[0-9][0-9][0-9][0-9]', '[0-9][0-9]', '[0-9][0-9]', '[0-9][0-9]'],
$this->dateFormat) $this->dateFormat
], )],
($fileInfo['dirname'] ?? '') . '/' . $this->filenameFormat ($fileInfo['dirname'] ?? '') . '/' . $this->filenameFormat
); );
if (isset($fileInfo['extension'])) { if (isset($fileInfo['extension'])) {

View File

@@ -220,7 +220,7 @@ class SlackRecord
/** /**
* Channel used by the bot when posting * Channel used by the bot when posting
* *
* @param ?string $channel * @param ?string $channel
* @return $this * @return $this
*/ */
public function setChannel(?string $channel = null): self public function setChannel(?string $channel = null): self
@@ -233,7 +233,7 @@ class SlackRecord
/** /**
* Username used by the bot when posting * Username used by the bot when posting
* *
* @param ?string $username * @param ?string $username
* @return $this * @return $this
*/ */
public function setUsername(?string $username = null): self public function setUsername(?string $username = null): self
@@ -292,7 +292,7 @@ class SlackRecord
} }
/** /**
* @param string[] $excludeFields * @param string[] $excludeFields
* @return $this * @return $this
*/ */
public function excludeFields(array $excludeFields = []): self public function excludeFields(array $excludeFields = []): self

View File

@@ -255,7 +255,7 @@ class SlackHandler extends SocketHandler
} }
/** /**
* @param string[] $excludeFields * @param string[] $excludeFields
* @return $this * @return $this
*/ */
public function excludeFields(array $excludeFields): self public function excludeFields(array $excludeFields): self

View File

@@ -151,7 +151,7 @@ class SocketHandler extends AbstractProcessingHandler
/** /**
* Set writing timeout. Only has effect during connection in the writing cycle. * Set writing timeout. Only has effect during connection in the writing cycle.
* *
* @param float $seconds 0 for no timeout * @param float $seconds 0 for no timeout
* @return $this * @return $this
*/ */
public function setWritingTimeout(float $seconds): self public function setWritingTimeout(float $seconds): self

View File

@@ -125,6 +125,7 @@ class StreamHandler extends AbstractProcessingHandler
set_error_handler(function (...$args) { set_error_handler(function (...$args) {
return $this->customErrorHandler(...$args); return $this->customErrorHandler(...$args);
}); });
try { try {
$stream = fopen($url, 'a'); $stream = fopen($url, 'a');
if ($this->filePermission !== null) { if ($this->filePermission !== null) {

View File

@@ -13,7 +13,6 @@ namespace Monolog\Handler;
use Closure; use Closure;
use Monolog\Level; use Monolog\Level;
use Monolog\Logger;
use Monolog\LogRecord; use Monolog\LogRecord;
use Monolog\Utils; use Monolog\Utils;
use Monolog\Formatter\FormatterInterface; use Monolog\Formatter\FormatterInterface;
@@ -68,8 +67,8 @@ class SymfonyMailerHandler extends MailHandler
/** /**
* Creates instance of Email to be sent * Creates instance of Email to be sent
* *
* @param string $content formatted email body to be sent * @param string $content formatted email body to be sent
* @param LogRecord[] $records Log records that formed the content * @param LogRecord[] $records Log records that formed the content
*/ */
protected function buildMessage(string $content, array $records): Email protected function buildMessage(string $content, array $records): Email
{ {
@@ -82,6 +81,7 @@ class SymfonyMailerHandler extends MailHandler
if (!$message instanceof Email) { if (!$message instanceof Email) {
$record = reset($records); $record = reset($records);
throw new \InvalidArgumentException('Could not resolve message as instance of Email or a callable returning it' . ($record instanceof LogRecord ? Utils::getRecordMessageForException($record) : '')); throw new \InvalidArgumentException('Could not resolve message as instance of Email or a callable returning it' . ($record instanceof LogRecord ? Utils::getRecordMessageForException($record) : ''));
} }

View File

@@ -12,7 +12,6 @@
namespace Monolog\Handler; namespace Monolog\Handler;
use Monolog\Level; use Monolog\Level;
use Monolog\Utils;
use Monolog\LogRecord; use Monolog\LogRecord;
/** /**

View File

@@ -82,7 +82,7 @@ enum Level: int
case Emergency = 600; case Emergency = 600;
/** /**
* @param value-of<self::NAMES>|LogLevel::*|'Debug'|'Info'|'Notice'|'Warning'|'Error'|'Critical'|'Alert'|'Emergency' $name * @param value-of<self::NAMES>|LogLevel::*|'Debug'|'Info'|'Notice'|'Warning'|'Error'|'Critical'|'Alert'|'Emergency' $name
* @return static * @return static
*/ */
public static function fromName(string $name): self public static function fromName(string $name): self
@@ -100,7 +100,7 @@ enum Level: int
} }
/** /**
* @param value-of<self::VALUES> $value * @param value-of<self::VALUES> $value
* @return static * @return static
*/ */
public static function fromValue(int $value): self public static function fromValue(int $value): self

View File

@@ -230,7 +230,7 @@ class Logger implements LoggerInterface, ResettableInterface
* *
* If a map is passed, keys will be ignored. * If a map is passed, keys will be ignored.
* *
* @param list<HandlerInterface> $handlers * @param list<HandlerInterface> $handlers
* @return $this * @return $this
*/ */
public function setHandlers(array $handlers): self public function setHandlers(array $handlers): self
@@ -297,7 +297,7 @@ class Logger implements LoggerInterface, ResettableInterface
* by default. This function lets you disable them though in case you want * by default. This function lets you disable them though in case you want
* to suppress microseconds from the output. * to suppress microseconds from the output.
* *
* @param bool $micro True to use microtime() to create timestamps * @param bool $micro True to use microtime() to create timestamps
* @return $this * @return $this
*/ */
public function useMicrosecondTimestamps(bool $micro): self public function useMicrosecondTimestamps(bool $micro): self
@@ -346,6 +346,7 @@ class Logger implements LoggerInterface, ResettableInterface
if ($logDepth === 3) { if ($logDepth === 3) {
$this->warning('A possible infinite logging loop was detected and aborted. It appears some of your handler code is triggering logging, see the previous log record for a hint as to what may be the cause.'); $this->warning('A possible infinite logging loop was detected and aborted. It appears some of your handler code is triggering logging, see the previous log record for a hint as to what may be the cause.');
return false; return false;
} elseif ($logDepth >= 5) { // log depth 4 is let through, so we can log the warning above } elseif ($logDepth >= 5) { // log depth 4 is let through, so we can log the warning above
return false; return false;
@@ -470,8 +471,8 @@ class Logger implements LoggerInterface, ResettableInterface
/** /**
* Converts PSR-3 levels to Monolog ones if necessary * Converts PSR-3 levels to Monolog ones if necessary
* *
* @param int|string|Level|LogLevel::* $level Level number (monolog) or name (PSR-3) * @param int|string|Level|LogLevel::* $level Level number (monolog) or name (PSR-3)
* @throws \Psr\Log\InvalidArgumentException If level is not defined * @throws \Psr\Log\InvalidArgumentException If level is not defined
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level
*/ */

View File

@@ -43,7 +43,7 @@ class IntrospectionProcessor implements ProcessorInterface
/** /**
* @param string|int|Level $level The minimum logging level at which this Processor will be triggered * @param string|int|Level $level The minimum logging level at which this Processor will be triggered
* @param string[] $skipClassesPartials * @param string[] $skipClassesPartials
* *
* @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level * @phpstan-param value-of<Level::VALUES>|value-of<Level::NAMES>|Level|LogLevel::* $level
*/ */

View File

@@ -32,7 +32,7 @@ class TagProcessor implements ProcessorInterface
} }
/** /**
* @param string[] $tags * @param string[] $tags
* @return $this * @return $this
*/ */
public function addTags(array $tags = []): self public function addTags(array $tags = []): self
@@ -43,7 +43,7 @@ class TagProcessor implements ProcessorInterface
} }
/** /**
* @param string[] $tags * @param string[] $tags
* @return $this * @return $this
*/ */
public function setTags(array $tags = []): self public function setTags(array $tags = []): self

View File

@@ -1,4 +1,13 @@
<?php <?php declare(strict_types=1);
/*
* This file is part of the Monolog package.
*
* (c) Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Monolog\Attribute; namespace Monolog\Attribute;
@@ -11,5 +20,4 @@ class WithMonologChannelTest extends TestCase
$attribute = new WithMonologChannel('fixture'); $attribute = new WithMonologChannel('fixture');
$this->assertSame('fixture', $attribute->channel); $this->assertSame('fixture', $attribute->channel);
} }
} }

View File

@@ -121,7 +121,7 @@ class JsonFormatterTest extends TestCase
public function testBasePathWithException(): void public function testBasePathWithException(): void
{ {
$formatter = new JsonFormatter(); $formatter = new JsonFormatter();
$formatter->setBasePath(dirname(dirname(dirname(__DIR__)))); $formatter->setBasePath(\dirname(\dirname(\dirname(__DIR__))));
$exception = new \RuntimeException('Foo'); $exception = new \RuntimeException('Foo');
$message = $this->formatRecordWithExceptionInContext($formatter, $exception); $message = $this->formatRecordWithExceptionInContext($formatter, $exception);

View File

@@ -84,7 +84,7 @@ class NormalizerFormatterTest extends TestCase
public function testFormatExceptionWithBasePath(): void public function testFormatExceptionWithBasePath(): void
{ {
$formatter = new NormalizerFormatter('Y-m-d'); $formatter = new NormalizerFormatter('Y-m-d');
$formatter->setBasePath(dirname(dirname(dirname(__DIR__)))); $formatter->setBasePath(\dirname(\dirname(\dirname(__DIR__))));
$e = new \LogicException('bar'); $e = new \LogicException('bar');
$formatted = $formatter->normalizeValue([ $formatted = $formatter->normalizeValue([
'exception' => $e, 'exception' => $e,

View File

@@ -103,16 +103,25 @@ class RedisHandlerTest extends TestCase
{ {
$redis = new class extends \Predis\Client { $redis = new class extends \Predis\Client {
public array $testResults = []; public array $testResults = [];
public function rpush(...$args) {
public function rpush(...$args)
{
$this->testResults[] = ['rpush', ...$args]; $this->testResults[] = ['rpush', ...$args];
return $this; return $this;
} }
public function ltrim(...$args) {
public function ltrim(...$args)
{
$this->testResults[] = ['ltrim', ...$args]; $this->testResults[] = ['ltrim', ...$args];
return $this; return $this;
} }
public function transaction(...$args) {
public function transaction(...$args)
{
$this->testResults[] = ['transaction start']; $this->testResults[] = ['transaction start'];
return ($args[0])($this); return ($args[0])($this);
} }
}; };

View File

@@ -59,7 +59,8 @@ class RotatingFileHandlerTest extends TestCase
unset($this->lastError); unset($this->lastError);
} }
private function rrmdir($directory) { private function rrmdir($directory)
{
if (! is_dir($directory)) { if (! is_dir($directory)) {
throw new InvalidArgumentException("$directory must be a directory"); throw new InvalidArgumentException("$directory must be a directory");
} }

View File

@@ -69,6 +69,7 @@ class SymfonyMailerHandlerTest extends TestCase
// Callback dynamically changes subject based on number of logged records // Callback dynamically changes subject based on number of logged records
$callback = function ($content, array $records) use ($expectedMessage) { $callback = function ($content, array $records) use ($expectedMessage) {
$subject = \count($records) > 0 ? 'Emergency' : 'Normal'; $subject = \count($records) > 0 ? 'Emergency' : 'Normal';
return $expectedMessage->subject($subject); return $expectedMessage->subject($subject);
}; };
$handler = new SymfonyMailerHandler($this->mailer, $callback); $handler = new SymfonyMailerHandler($this->mailer, $callback);

View File

@@ -285,11 +285,11 @@ class LoggerTest extends TestCase
$handler->expects($this->any()) $handler->expects($this->any())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$handler->expects($this->any()) $handler->expects($this->any())
->method('handle') ->method('handle')
->willReturn(true); ->willReturn(true);
;
$logger->pushHandler($handler); $logger->pushHandler($handler);
$processor = $this->getMockBuilder('Monolog\Processor\WebProcessor') $processor = $this->getMockBuilder('Monolog\Processor\WebProcessor')
@@ -316,7 +316,7 @@ class LoggerTest extends TestCase
$handler->expects($this->once()) $handler->expects($this->once())
->method('isHandling') ->method('isHandling')
->willReturn(false); ->willReturn(false);
;
$logger->pushHandler($handler); $logger->pushHandler($handler);
$that = $this; $that = $this;
$logger->pushProcessor(function ($record) use ($that) { $logger->pushProcessor(function ($record) use ($that) {
@@ -337,29 +337,29 @@ class LoggerTest extends TestCase
$handler1->expects($this->never()) $handler1->expects($this->never())
->method('isHandling') ->method('isHandling')
->willReturn(false); ->willReturn(false);
;
$handler1->expects($this->once()) $handler1->expects($this->once())
->method('handle') ->method('handle')
->willReturn(false); ->willReturn(false);
;
$logger->pushHandler($handler1); $logger->pushHandler($handler1);
$handler2 = $this->createMock('Monolog\Handler\HandlerInterface'); $handler2 = $this->createMock('Monolog\Handler\HandlerInterface');
$handler2->expects($this->once()) $handler2->expects($this->once())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$handler2->expects($this->once()) $handler2->expects($this->once())
->method('handle') ->method('handle')
->willReturn(false); ->willReturn(false);
;
$logger->pushHandler($handler2); $logger->pushHandler($handler2);
$handler3 = $this->createMock('Monolog\Handler\HandlerInterface'); $handler3 = $this->createMock('Monolog\Handler\HandlerInterface');
$handler3->expects($this->once()) $handler3->expects($this->once())
->method('isHandling') ->method('isHandling')
->willReturn(false); ->willReturn(false);
;
$handler3->expects($this->never()) $handler3->expects($this->never())
->method('handle') ->method('handle')
; ;
@@ -377,27 +377,25 @@ class LoggerTest extends TestCase
$handler1->expects($this->never()) $handler1->expects($this->never())
->method('isHandling') ->method('isHandling')
->willReturn(false); ->willReturn(false);
;
$handler1->expects($this->once()) $handler1->expects($this->once())
->method('handle') ->method('handle')
->willReturn(false); ->willReturn(false);
;
$handler2 = $this->createMock('Monolog\Handler\HandlerInterface'); $handler2 = $this->createMock('Monolog\Handler\HandlerInterface');
$handler2->expects($this->once()) $handler2->expects($this->once())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$handler2->expects($this->once()) $handler2->expects($this->once())
->method('handle') ->method('handle')
->willReturn(false); ->willReturn(false);
;
$handler3 = $this->createMock('Monolog\Handler\HandlerInterface'); $handler3 = $this->createMock('Monolog\Handler\HandlerInterface');
$handler3->expects($this->once()) $handler3->expects($this->once())
->method('isHandling') ->method('isHandling')
->willReturn(false); ->willReturn(false);
;
$handler3->expects($this->never()) $handler3->expects($this->never())
->method('handle') ->method('handle')
; ;
@@ -419,22 +417,22 @@ class LoggerTest extends TestCase
$handler1->expects($this->any()) $handler1->expects($this->any())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$handler1->expects($this->once()) $handler1->expects($this->once())
->method('handle') ->method('handle')
->willReturn(false); ->willReturn(false);
;
$logger->pushHandler($handler1); $logger->pushHandler($handler1);
$handler2 = $this->createMock('Monolog\Handler\HandlerInterface'); $handler2 = $this->createMock('Monolog\Handler\HandlerInterface');
$handler2->expects($this->any()) $handler2->expects($this->any())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$handler2->expects($this->once()) $handler2->expects($this->once())
->method('handle') ->method('handle')
->willReturn(false); ->willReturn(false);
;
$logger->pushHandler($handler2); $logger->pushHandler($handler2);
$logger->debug('test'); $logger->debug('test');
@@ -451,7 +449,7 @@ class LoggerTest extends TestCase
$handler1->expects($this->any()) $handler1->expects($this->any())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$handler1->expects($this->never()) $handler1->expects($this->never())
->method('handle') ->method('handle')
; ;
@@ -461,11 +459,11 @@ class LoggerTest extends TestCase
$handler2->expects($this->any()) $handler2->expects($this->any())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$handler2->expects($this->once()) $handler2->expects($this->once())
->method('handle') ->method('handle')
->willReturn(true); ->willReturn(true);
;
$logger->pushHandler($handler2); $logger->pushHandler($handler2);
$logger->debug('test'); $logger->debug('test');
@@ -482,7 +480,6 @@ class LoggerTest extends TestCase
$handler1->expects($this->any()) $handler1->expects($this->any())
->method('isHandling') ->method('isHandling')
->willReturn(false); ->willReturn(false);
;
$logger->pushHandler($handler1); $logger->pushHandler($handler1);
$this->assertFalse($logger->isHandling(Level::Debug)); $this->assertFalse($logger->isHandling(Level::Debug));
@@ -491,7 +488,6 @@ class LoggerTest extends TestCase
$handler2->expects($this->any()) $handler2->expects($this->any())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$logger->pushHandler($handler2); $logger->pushHandler($handler2);
$this->assertTrue($logger->isHandling(Level::Debug)); $this->assertTrue($logger->isHandling(Level::Debug));
@@ -677,7 +673,7 @@ class LoggerTest extends TestCase
$handler->expects($this->any()) $handler->expects($this->any())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$handler->expects($this->any()) $handler->expects($this->any())
->method('handle') ->method('handle')
->will($this->throwException(new \Exception('Some handler exception'))) ->will($this->throwException(new \Exception('Some handler exception')))
@@ -706,7 +702,7 @@ class LoggerTest extends TestCase
$handler->expects($this->any()) $handler->expects($this->any())
->method('isHandling') ->method('isHandling')
->willReturn(true); ->willReturn(true);
;
$handler->expects($this->any()) $handler->expects($this->any())
->method('handle') ->method('handle')
->will($this->throwException(new \Exception('Some handler exception'))) ->will($this->throwException(new \Exception('Some handler exception')))
@@ -900,7 +896,6 @@ class LoggingHandler implements HandlerInterface
} }
} }
class FiberSuspendHandler implements HandlerInterface class FiberSuspendHandler implements HandlerInterface
{ {
public function isHandling(LogRecord $record): bool public function isHandling(LogRecord $record): bool

View File

@@ -161,7 +161,7 @@ class PsrLogCompatTest extends TestCase
/** /**
* Creates a mock of a `Stringable`. * Creates a mock of a `Stringable`.
* *
* @param string $string The string that must be represented by the stringable. * @param string $string The string that must be represented by the stringable.
*/ */
protected function createStringable(string $string = ''): MockObject&Stringable protected function createStringable(string $string = ''): MockObject&Stringable
{ {