Releases: Seldaek/monolog
Releases · Seldaek/monolog
3.3.0
- Deprecated
FlowdockHandler
& Formatter as the flowdock service was shutdown (#1748) - Added
ClosureContextProcessor
to allow delaying the creation of context data by setting a Closure in context which is called when the log record is used (#1745) - Added an ElasticsearchHandler option to set the
op_type
tocreate
instead of the defaultindex
(#1766) - Added support for enum context values in PsrLogMessageProcessor (#1773)
- Added graylog2/gelf-php 2.x support (#1747)
- Improved
BrowserConsoleHandler
logging to use more appropriate methods than just console.log in the browser (#1739) - Fixed GitProcessor not filtering correctly based on Level (#1749)
- Fixed
WhatFailureGroupHandler
not catching errors happening insideclose()
(#1791) - Fixed datetime field in
GoogleCloudLoggingFormatter
(#1758) - Fixed infinite loop detection within Fibers (#1753)
- Fixed
AmqpHandler->setExtraAttributes
not working with buffering handler wrappers (#1781)
2.9.1
2.9.0
- Deprecated FlowdockHandler & Formatter as the flowdock service was shutdown (#1748)
- Added support for enum context values in PsrLogMessageProcessor (#1773)
- Added graylog2/gelf-php 2.x support (#1747)
- Improved
BrowserConsoleHandler
logging to use more appropriate methods than just console.log in the browser (#1739) - Fixed
WhatFailureGroupHandler
not catching errors happening insideclose()
(#1791) - Fixed datetime field in
GoogleCloudLoggingFormatter
(#1758) - Fixed infinite loop detection within Fibers (#1753)
- Fixed
AmqpHandler->setExtraAttributes
not working with buffering handler wrappers (#1781)
3.2.0
- Deprecated
CubeHandler
andPHPConsoleHandler
as both projects are abandoned and those should not be used anymore (#1734) - Marked
Logger
@final
as it should not be extended, prefer composition or talk to us if you are missing something - Added RFC 5424 level (
7
to0
) support toLogger::log
andLogger::addRecord
to increase interoperability (#1723) - Added
SyslogFormatter
to output syslog-like files which can be consumed by tools like lnav (#1689) - Added support for
__toString
for objects which are not json serializable inJsonFormatter
(#1733) - Added
GoogleCloudLoggingFormatter
(#1719) - Added support for Predis 2.x (#1732)
- Added
AmqpHandler->setExtraAttributes
to allow configuring attributes when using an AMQPExchange (#1724) - Fixed serialization/unserialization of handlers to make sure private properties are included (#1727)
- Fixed allowInlineLineBreaks in LineFormatter causing issues with windows paths containing
\n
or\r
sequences (#1720) - Fixed max normalization depth not being taken into account when formatting exceptions with a deep chain of previous exceptions (#1726)
- Fixed PHP 8.2 deprecation warnings (#1722)
- Fixed rare race condition or filesystem issue where StreamHandler is unable to create the directory the log should go into yet it exists already (#1678)
2.8.0
- Deprecated
CubeHandler
andPHPConsoleHandler
as both projects are abandoned and those should not be used anymore (#1734) - Added RFC 5424 level (
7
to0
) support toLogger::log
andLogger::addRecord
to increase interoperability (#1723) - Added support for
__toString
for objects which are not json serializable inJsonFormatter
(#1733) - Added
GoogleCloudLoggingFormatter
(#1719) - Added support for Predis 2.x (#1732)
- Added
AmqpHandler->setExtraAttributes
to allow configuring attributes when using an AMQPExchange (#1724) - Fixed serialization/unserialization of handlers to make sure private properties are included (#1727)
- Fixed allowInlineLineBreaks in LineFormatter causing issues with windows paths containing
\n
or\r
sequences (#1720) - Fixed max normalization depth not being taken into account when formatting exceptions with a deep chain of previous exceptions (#1726)
- Fixed PHP 8.2 deprecation warnings (#1722)
- Fixed rare race condition or filesystem issue where StreamHandler is unable to create the directory the log should go into yet it exists already (#1678)
3.1.0
- Added
$datetime
parameter toLogger::addRecord
as low level API to allow logging into the past or future (#1682) - Added
Logger::useLoggingLoopDetection
to allow disabling cyclic logging detection in concurrent frameworks (#1681) - Fixed handling of fatal errors if callPrevious is disabled in ErrorHandler (#1670)
- Fixed v2/v3 interop issue by removing the need for a return type in ProcessorInterface (#1680)
- Marked the reusable
Monolog\Test\TestCase
class as@internal
to make sure PHPStorm does not show it above PHPUnit, you may still use it to test your own handlers/etc though (#1677) - Fixed RotatingFileHandler issue when the date format contained slashes (#1671)
2.7.0
- Added
$datetime
parameter toLogger::addRecord
as low level API to allow logging into the past or future (#1682) - Added
Logger::useLoggingLoopDetection
to allow disabling cyclic logging detection in concurrent frameworks (#1681) - Fixed handling of fatal errors if callPrevious is disabled in ErrorHandler (#1670)
- Marked the reusable
Monolog\Test\TestCase
class as@internal
to make sure PHPStorm does not show it above PHPUnit, you may still use it to test your own handlers/etc though (#1677) - Fixed RotatingFileHandler issue when the date format contained slashes (#1671)
1.27.1
3.0.0
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 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
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 stored as an enum
Monolog\Level
- 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.
2.6.0
- Deprecated
SwiftMailerHandler
, useSymfonyMailerHandler
instead - Added
SymfonyMailerHandler
(#1663) - Added ElasticSearch 8.x support to the ElasticsearchHandler (#1662)
- Added a way to filter/modify stack traces in LineFormatter (#1665)
- Fixed UdpSocket not being able to reopen/reconnect after close()
- Fixed infinite loops if a Handler is triggering logging while handling log records