- Security: Fixed potential XSS in
BrowserConsoleHandlerwhen logging user provided content - Added
RedactingFormatterto automatically redact sensitive data from records, based on key names,#[SensitiveParameter]constructor params and/or regex patterns (#2041) - Added
FrankenPhpHandlerto log records via FrankenPHP's frankenphp_log() function (#2056) - Added
LogMonsterHandlerwhich complains if the code did not log enough records before the process/request ends, like a dead man's switch for logs (#2039) - Added
FILE_PER_HOURrotation mode toRotatingFileHandler(#2040) - Added
ErrorHandler::captureStackTraces()to attach the stack trace of PHP errors to the records it generates (#2060) - Added
NormalizerFormatter::setMaxTraceLength()to limit how many stack trace frames are included when normalizing exceptions (#2015) - Added extension points to
TelegramBotHandlerto change the API URL (e.g. for a self-hosted Bot API server) and to send extra curl headers (#2029) - Added ability to override
IntrospectionProcessor'sSKIP_FUNCTIONSin subclasses (#2050) - Added
$maxLengthparam toSyslogUdpHandler/UdpSocketto keep datagrams below the path MTU, as fragmented UDP packets are often dropped (#2049) - Fixed
StreamHandlertruncating writes on non-blocking streams, it now loops until the whole record is written (#2016) - Fixed stack trace frames without file/line being skipped, they are now reported as
internal[function]entries so traces are not truncated or empty (#2061) - Fixed
RotatingFileHandlercleanup not finding files behind stream wrappers (e.g. private://) as glob() cannot see through those (#2058) - Fixed
RotatingFileHandlernot using the configured timezone when computing the next rotation time (#2022) - Fixed scalars being replaced by the "Over N levels deep" message instead of being output when the max normalization depth is reached (#2042)
- Fixed
DeduplicationHandlerfailing with an undefined array key error when the store file is written to concurrently (#2020) - Fixed
TelegramBotHandlerswallowing errors when the API returns a non-JSON response (#2030) - Fixed
AbstractProcessingHandler::handle()reading$bubbledirectly instead of callinggetBubble(), so overrides of it were ignored (#2031) - Fixed warning on PHP 8.5 when
ErrorHandlersets the HTTP response code and a status line was already registered (#2027)
Full Changelog: 3.10.0...3.11.0