Monolog v3.0.0-RC1 Release Notes
Release Date: 2022-05-08 // almost 2 years ago-
๐ This is mostly a cleanup release offering stronger type guarantees for integrators with the array->object/enum changes, but there is no big new feature for end users.
โฌ๏ธ See [UPGRADE notes](UPGRADE.md#300) for details on all breaking changes especially if you are extending/implementing Monolog classes/interfaces.
Noteworthy BC Breaks:
- ๐ The minimum supported PHP version is now
8.1.0
. - ๐ฒ Log records have been converted from an array to a [
Monolog\LogRecord
object](src/Monolog/LogRecord.php) with public (and mostly readonly) properties. e.g. instead of doing$record['context']
use$record->context
. In formatters or handlers if you rather need an array to work with you can use$record->toArray()
to get back a Monolog 1/2 style record array. This will contain the enum values instead of enum cases in thelevel
andlevel_name
keys to be more backwards compatible and use simpler data types. FormatterInterface
,HandlerInterface
,ProcessorInterface
, etc. changed to containLogRecord $record
instead ofarray $record
parameter types. If you want to support multiple Monolog versions this should be possible by type-hinting nothing, orarray|LogRecord
if you support PHP 8.0+. You can then code against the $record using Monolog 2 style as LogRecord implements ArrayAccess for BC. The interfaces do not require aLogRecord
return type even where it would be applicable, but if you only support Monolog 3 in integration code I would recommend you useLogRecord
return types wherever fitting to ensure forward compatibility as it may be added in Monolog 4.- ๐ฒ Log levels are now enums [
Monolog\Level
](src/Monolog/Level.php) and [Monolog\LevelName
](src/Monolog/LevelName.php) - โ Removed deprecated SwiftMailerHandler, migrate to SymfonyMailerHandler instead.
ResettableInterface::reset()
now requires a void return type.- All properties have had types added, which may require you to do so as well if you extended a Monolog class and declared the same property.
๐ New deprecations:
- ๐
Logger::DEBUG
,Logger::ERROR
, etc. are now deprecated in favor of theMonolog\Level
enum. e.g. instead ofLogger::WARNING
useLevel::Warning
if you need to pass the enum case to Monolog or one of its handlers, orLevel::Warning->value
if you need the integer value equal to whatLogger::WARNING
was giving you. - ๐
Logger::getLevelName()
is now deprecated.
- ๐ The minimum supported PHP version is now