1### 2.5.0 (2022-04-08)
2
3* Added `callType` to IntrospectionProcessor (#1612)
4* Fixed AsMonologProcessor syntax to be compatible with PHP 7.2 (#1651)
5
6### 2.4.0 (2022-03-14)
7
8  * Added [`Monolog\LogRecord`](src/Monolog/LogRecord.php) interface that can be used to type-hint records like `array|\Monolog\LogRecord $record` to be forward compatible with the upcoming Monolog 3 changes
9  * Added `includeStacktraces` constructor params to LineFormatter & JsonFormatter (#1603)
10  * Added `persistent`, `timeout`, `writingTimeout`, `connectionTimeout`, `chunkSize` constructor params to SocketHandler and derivatives (#1600)
11  * Added `AsMonologProcessor` PHP attribute which can help autowiring / autoconfiguration of processors if frameworks / integrations decide to make use of it. This is useless when used purely with Monolog (#1637)
12  * Added support for keeping native BSON types as is in MongoDBFormatter (#1620)
13  * Added support for a `user_agent` key in WebProcessor, disabled by default but you can use it by configuring the $extraFields you want (#1613)
14  * Added support for username/userIcon in SlackWebhookHandler (#1617)
15  * Added extension points to BrowserConsoleHandler (#1593)
16  * Added record message/context/extra info to exceptions thrown when a StreamHandler cannot open its stream to avoid completely losing the data logged (#1630)
17  * Fixed error handler signature to accept a null $context which happens with internal PHP errors (#1614)
18  * Fixed a few setter methods not returning `self` (#1609)
19  * Fixed handling of records going over the max Telegram message length (#1616)
20
21### 2.3.5 (2021-10-01)
22
23  * Fixed regression in StreamHandler since 2.3.3 on systems with the memory_limit set to >=20GB (#1592)
24
25### 2.3.4 (2021-09-15)
26
27  * Fixed support for psr/log 3.x (#1589)
28
29### 2.3.3 (2021-09-14)
30
31  * Fixed memory usage when using StreamHandler and calling stream_get_contents on the resource you passed to it (#1578, #1577)
32  * Fixed support for psr/log 2.x (#1587)
33  * Fixed some type annotations
34
35### 2.3.2 (2021-07-23)
36
37  * Fixed compatibility with PHP 7.2 - 7.4 when experiencing PCRE errors (#1568)
38
39### 2.3.1 (2021-07-14)
40
41  * Fixed Utils::getClass handling of anonymous classes not being fully compatible with PHP 8 (#1563)
42  * Fixed some `@inheritDoc` annotations having the wrong case
43
44### 2.3.0 (2021-07-05)
45
46  * Added a ton of PHPStan type annotations as well as type aliases on Monolog\Logger for Record, Level and LevelName that you can import (#1557)
47  * Added ability to customize date format when using JsonFormatter (#1561)
48  * Fixed FilterHandler not calling reset on its internal handler when reset() is called on it (#1531)
49  * Fixed SyslogUdpHandler not setting the timezone correctly on DateTimeImmutable instances (#1540)
50  * Fixed StreamHandler thread safety - chunk size set to 2GB now to avoid interlacing when doing concurrent writes (#1553)
51
52### 2.2.0 (2020-12-14)
53
54  * Added JSON_PARTIAL_OUTPUT_ON_ERROR to default json encoding flags, to avoid dropping entire context data or even records due to an invalid subset of it somewhere
55  * Added setDateFormat to NormalizerFormatter (and Line/Json formatters by extension) to allow changing this after object creation
56  * Added RedisPubSubHandler to log records to a Redis channel using PUBLISH
57  * Added support for Elastica 7, and deprecated the $type argument of ElasticaFormatter which is not in use anymore as of Elastica 7
58  * Added support for millisecond write timeouts in SocketHandler, you can now pass floats to setWritingTimeout, e.g. 0.2 is 200ms
59  * Added support for unix sockets in SyslogUdpHandler (set $port to 0 to make the $host a unix socket)
60  * Added handleBatch support for TelegramBotHandler
61  * Added RFC5424e extended date format including milliseconds to SyslogUdpHandler
62  * Added support for configuring handlers with numeric level values in strings (coming from e.g. env vars)
63  * Fixed Wildfire/FirePHP/ChromePHP handling of unicode characters
64  * Fixed PHP 8 issues in SyslogUdpHandler
65  * Fixed internal type error when mbstring is missing
66
67### 2.1.1 (2020-07-23)
68
69  * Fixed removing of json encoding options
70  * Fixed type hint of $level not accepting strings in SendGridHandler and OverflowHandler
71  * Fixed SwiftMailerHandler not accepting email templates with an empty subject
72  * Fixed array access on null in RavenHandler
73  * Fixed unique_id in WebProcessor not being disableable
74
75### 2.1.0 (2020-05-22)
76
77  * Added `JSON_INVALID_UTF8_SUBSTITUTE` to default json flags, so that invalid UTF8 characters now get converted to [�](https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character) instead of being converted from ISO-8859-15 to UTF8 as it was before, which was hardly a comprehensive solution
78  * Added `$ignoreEmptyContextAndExtra` option to JsonFormatter to skip empty context/extra entirely from the output
79  * Added `$parseMode`, `$disableWebPagePreview` and `$disableNotification` options to TelegramBotHandler
80  * Added tentative support for PHP 8
81  * NormalizerFormatter::addJsonEncodeOption and removeJsonEncodeOption are now public to allow modifying default json flags
82  * Fixed GitProcessor type error when there is no git repo present
83  * Fixed normalization of SoapFault objects containing deeply nested objects as "detail"
84  * Fixed support for relative paths in RotatingFileHandler
85
86### 2.0.2 (2019-12-20)
87
88  * Fixed ElasticsearchHandler swallowing exceptions details when failing to index log records
89  * Fixed normalization of SoapFault objects containing non-strings as "detail" in LineFormatter
90  * Fixed formatting of resources in JsonFormatter
91  * Fixed RedisHandler failing to use MULTI properly when passed a proxied Redis instance (e.g. in Symfony with lazy services)
92  * Fixed FilterHandler triggering a notice when handleBatch was filtering all records passed to it
93  * Fixed Turkish locale messing up the conversion of level names to their constant values
94
95### 2.0.1 (2019-11-13)
96
97  * Fixed normalization of Traversables to avoid traversing them as not all of them are rewindable
98  * Fixed setFormatter/getFormatter to forward to the nested handler in FilterHandler, FingersCrossedHandler, BufferHandler, OverflowHandler and SamplingHandler
99  * Fixed BrowserConsoleHandler formatting when using multiple styles
100  * Fixed normalization of exception codes to be always integers even for PDOException which have them as numeric strings
101  * Fixed normalization of SoapFault objects containing non-strings as "detail"
102  * Fixed json encoding across all handlers to always attempt recovery of non-UTF-8 strings instead of failing the whole encoding
103  * Fixed ChromePHPHandler to avoid sending more data than latest Chrome versions allow in headers (4KB down from 256KB).
104  * Fixed type error in BrowserConsoleHandler when the context array of log records was not associative.
105
106### 2.0.0 (2019-08-30)
107
108  * BC Break: This is a major release, see [UPGRADE.md](UPGRADE.md) for details if you are coming from a 1.x release
109  * BC Break: Logger methods log/debug/info/notice/warning/error/critical/alert/emergency now have explicit void return types
110  * Added FallbackGroupHandler which works like the WhatFailureGroupHandler but stops dispatching log records as soon as one handler accepted it
111  * Fixed support for UTF-8 when cutting strings to avoid cutting a multibyte-character in half
112  * Fixed normalizers handling of exception backtraces to avoid serializing arguments in some cases
113  * Fixed date timezone handling in SyslogUdpHandler
114
115### 2.0.0-beta2 (2019-07-06)
116
117  * BC Break: This is a major release, see [UPGRADE.md](UPGRADE.md) for details if you are coming from a 1.x release
118  * BC Break: PHP 7.2 is now the minimum required PHP version.
119  * BC Break: Removed SlackbotHandler, RavenHandler and HipChatHandler, see [UPGRADE.md](UPGRADE.md) for details
120  * Added OverflowHandler which will only flush log records to its nested handler when reaching a certain amount of logs (i.e. only pass through when things go really bad)
121  * Added TelegramBotHandler to log records to a [Telegram](https://core.telegram.org/bots/api) bot account
122  * Added support for JsonSerializable when normalizing exceptions
123  * Added support for RFC3164 (outdated BSD syslog protocol) to SyslogUdpHandler
124  * Added SoapFault details to formatted exceptions
125  * Fixed DeduplicationHandler silently failing to start when file could not be opened
126  * Fixed issue in GroupHandler and WhatFailureGroupHandler where setting multiple processors would duplicate records
127  * Fixed GelfFormatter losing some data when one attachment was too long
128  * Fixed issue in SignalHandler restarting syscalls functionality
129  * Improved performance of LogglyHandler when sending multiple logs in a single request
130
131### 2.0.0-beta1 (2018-12-08)
132
133  * BC Break: This is a major release, see [UPGRADE.md](UPGRADE.md) for details if you are coming from a 1.x release
134  * BC Break: PHP 7.1 is now the minimum required PHP version.
135  * BC Break: Quite a few interface changes, only relevant if you implemented your own handlers/processors/formatters
136  * BC Break: Removed non-PSR-3 methods to add records, all the `add*` (e.g. `addWarning`) methods as well as `emerg`, `crit`, `err` and `warn`
137  * BC Break: The record timezone is now set per Logger instance and not statically anymore
138  * BC Break: There is no more default handler configured on empty Logger instances
139  * BC Break: ElasticSearchHandler renamed to ElasticaHandler
140  * BC Break: Various handler-specific breaks, see [UPGRADE.md](UPGRADE.md) for details
141  * Added scalar type hints and return hints in all the places it was possible. Switched strict_types on for more reliability.
142  * Added DateTimeImmutable support, all record datetime are now immutable, and will toString/json serialize with the correct date format, including microseconds (unless disabled)
143  * Added timezone and microseconds to the default date format
144  * Added SendGridHandler to use the SendGrid API to send emails
145  * Added LogmaticHandler to use the Logmatic.io API to store log records
146  * Added SqsHandler to send log records to an AWS SQS queue
147  * Added ElasticsearchHandler to send records via the official ES library. Elastica users should now use ElasticaHandler instead of ElasticSearchHandler
148  * Added NoopHandler which is similar to the NullHandle but does not prevent the bubbling of log records to handlers further down the configuration, useful for temporarily disabling a handler in configuration files
149  * Added ProcessHandler to write log output to the STDIN of a given process
150  * Added HostnameProcessor that adds the machine's hostname to log records
151  * Added a `$dateFormat` option to the PsrLogMessageProcessor which lets you format DateTime instances nicely
152  * Added support for the PHP 7.x `mongodb` extension in the MongoDBHandler
153  * Fixed many minor issues in various handlers, and probably added a few regressions too
154
155### 1.26.1 (2021-05-28)
156
157  * Fixed PHP 8.1 deprecation warning
158
159### 1.26.0 (2020-12-14)
160
161  * Added $dateFormat and $removeUsedContextFields arguments to PsrLogMessageProcessor (backport from 2.x)
162
163### 1.25.5 (2020-07-23)
164
165  * Fixed array access on null in RavenHandler
166  * Fixed unique_id in WebProcessor not being disableable
167
168### 1.25.4 (2020-05-22)
169
170  * Fixed GitProcessor type error when there is no git repo present
171  * Fixed normalization of SoapFault objects containing deeply nested objects as "detail"
172  * Fixed support for relative paths in RotatingFileHandler
173
174### 1.25.3 (2019-12-20)
175
176  * Fixed formatting of resources in JsonFormatter
177  * Fixed RedisHandler failing to use MULTI properly when passed a proxied Redis instance (e.g. in Symfony with lazy services)
178  * Fixed FilterHandler triggering a notice when handleBatch was filtering all records passed to it
179  * Fixed Turkish locale messing up the conversion of level names to their constant values
180
181### 1.25.2 (2019-11-13)
182
183  * Fixed normalization of Traversables to avoid traversing them as not all of them are rewindable
184  * Fixed setFormatter/getFormatter to forward to the nested handler in FilterHandler, FingersCrossedHandler, BufferHandler and SamplingHandler
185  * Fixed BrowserConsoleHandler formatting when using multiple styles
186  * Fixed normalization of exception codes to be always integers even for PDOException which have them as numeric strings
187  * Fixed normalization of SoapFault objects containing non-strings as "detail"
188  * Fixed json encoding across all handlers to always attempt recovery of non-UTF-8 strings instead of failing the whole encoding
189
190### 1.25.1 (2019-09-06)
191
192  * Fixed forward-compatible interfaces to be compatible with Monolog 1.x too.
193
194### 1.25.0 (2019-09-06)
195
196  * Deprecated SlackbotHandler, use SlackWebhookHandler or SlackHandler instead
197  * Deprecated RavenHandler, use sentry/sentry 2.x and their Sentry\Monolog\Handler instead
198  * Deprecated HipChatHandler, migrate to Slack and use SlackWebhookHandler or SlackHandler instead
199  * Added forward-compatible interfaces and traits FormattableHandlerInterface, FormattableHandlerTrait, ProcessableHandlerInterface, ProcessableHandlerTrait. If you use modern PHP and want to make code compatible with Monolog 1 and 2 this can help. You will have to require at least Monolog 1.25 though.
200  * Added support for RFC3164 (outdated BSD syslog protocol) to SyslogUdpHandler
201  * Fixed issue in GroupHandler and WhatFailureGroupHandler where setting multiple processors would duplicate records
202  * Fixed issue in SignalHandler restarting syscalls functionality
203  * Fixed normalizers handling of exception backtraces to avoid serializing arguments in some cases
204  * Fixed ZendMonitorHandler to work with the latest Zend Server versions
205  * Fixed ChromePHPHandler to avoid sending more data than latest Chrome versions allow in headers (4KB down from 256KB).
206
207### 1.24.0 (2018-11-05)
208
209  * BC Notice: If you are extending any of the Monolog's Formatters' `normalize` method, make sure you add the new `$depth = 0` argument to your function signature to avoid strict PHP warnings.
210  * Added a `ResettableInterface` in order to reset/reset/clear/flush handlers and processors
211  * Added a `ProcessorInterface` as an optional way to label a class as being a processor (mostly useful for autowiring dependency containers)
212  * Added a way to log signals being received using Monolog\SignalHandler
213  * Added ability to customize error handling at the Logger level using Logger::setExceptionHandler
214  * Added InsightOpsHandler to migrate users of the LogEntriesHandler
215  * Added protection to NormalizerFormatter against circular and very deep structures, it now stops normalizing at a depth of 9
216  * Added capture of stack traces to ErrorHandler when logging PHP errors
217  * Added RavenHandler support for a `contexts` context or extra key to forward that to Sentry's contexts
218  * Added forwarding of context info to FluentdFormatter
219  * Added SocketHandler::setChunkSize to override the default chunk size in case you must send large log lines to rsyslog for example
220  * Added ability to extend/override BrowserConsoleHandler
221  * Added SlackWebhookHandler::getWebhookUrl and SlackHandler::getToken to enable class extensibility
222  * Added SwiftMailerHandler::getSubjectFormatter to enable class extensibility
223  * Dropped official support for HHVM in test builds
224  * Fixed normalization of exception traces when call_user_func is used to avoid serializing objects and the data they contain
225  * Fixed naming of fields in Slack handler, all field names are now capitalized in all cases
226  * Fixed HipChatHandler bug where slack dropped messages randomly
227  * Fixed normalization of objects in Slack handlers
228  * Fixed support for PHP7's Throwable in NewRelicHandler
229  * Fixed race bug when StreamHandler sometimes incorrectly reported it failed to create a directory
230  * Fixed table row styling issues in HtmlFormatter
231  * Fixed RavenHandler dropping the message when logging exception
232  * Fixed WhatFailureGroupHandler skipping processors when using handleBatch
233    and implement it where possible
234  * Fixed display of anonymous class names
235
236### 1.23.0 (2017-06-19)
237
238  * Improved SyslogUdpHandler's support for RFC5424 and added optional `$ident` argument
239  * Fixed GelfHandler truncation to be per field and not per message
240  * Fixed compatibility issue with PHP <5.3.6
241  * Fixed support for headless Chrome in ChromePHPHandler
242  * Fixed support for latest Aws SDK in DynamoDbHandler
243  * Fixed support for SwiftMailer 6.0+ in SwiftMailerHandler
244
245### 1.22.1 (2017-03-13)
246
247  * Fixed lots of minor issues in the new Slack integrations
248  * Fixed support for allowInlineLineBreaks in LineFormatter when formatting exception backtraces
249
250### 1.22.0 (2016-11-26)
251
252  * Added SlackbotHandler and SlackWebhookHandler to set up Slack integration more easily
253  * Added MercurialProcessor to add mercurial revision and branch names to log records
254  * Added support for AWS SDK v3 in DynamoDbHandler
255  * Fixed fatal errors occurring when normalizing generators that have been fully consumed
256  * Fixed RollbarHandler to include a level (rollbar level), monolog_level (original name), channel and datetime (unix)
257  * Fixed RollbarHandler not flushing records automatically, calling close() explicitly is not necessary anymore
258  * Fixed SyslogUdpHandler to avoid sending empty frames
259  * Fixed a few PHP 7.0 and 7.1 compatibility issues
260
261### 1.21.0 (2016-07-29)
262
263  * Break: Reverted the addition of $context when the ErrorHandler handles regular php errors from 1.20.0 as it was causing issues
264  * Added support for more formats in RotatingFileHandler::setFilenameFormat as long as they have Y, m and d in order
265  * Added ability to format the main line of text the SlackHandler sends by explicitly setting a formatter on the handler
266  * Added information about SoapFault instances in NormalizerFormatter
267  * Added $handleOnlyReportedErrors option on ErrorHandler::registerErrorHandler (default true) to allow logging of all errors no matter the error_reporting level
268
269### 1.20.0 (2016-07-02)
270
271  * Added FingersCrossedHandler::activate() to manually trigger the handler regardless of the activation policy
272  * Added StreamHandler::getUrl to retrieve the stream's URL
273  * Added ability to override addRow/addTitle in HtmlFormatter
274  * Added the $context to context information when the ErrorHandler handles a regular php error
275  * Deprecated RotatingFileHandler::setFilenameFormat to only support 3 formats: Y, Y-m and Y-m-d
276  * Fixed WhatFailureGroupHandler to work with PHP7 throwables
277  * Fixed a few minor bugs
278
279### 1.19.0 (2016-04-12)
280
281  * Break: StreamHandler will not close streams automatically that it does not own. If you pass in a stream (not a path/url), then it will not close it for you. You can retrieve those using getStream() if needed
282  * Added DeduplicationHandler to remove duplicate records from notifications across multiple requests, useful for email or other notifications on errors
283  * Added ability to use `%message%` and other LineFormatter replacements in the subject line of emails sent with NativeMailHandler and SwiftMailerHandler
284  * Fixed HipChatHandler handling of long messages
285
286### 1.18.2 (2016-04-02)
287
288  * Fixed ElasticaFormatter to use more precise dates
289  * Fixed GelfMessageFormatter sending too long messages
290
291### 1.18.1 (2016-03-13)
292
293  * Fixed SlackHandler bug where slack dropped messages randomly
294  * Fixed RedisHandler issue when using with the PHPRedis extension
295  * Fixed AmqpHandler content-type being incorrectly set when using with the AMQP extension
296  * Fixed BrowserConsoleHandler regression
297
298### 1.18.0 (2016-03-01)
299
300  * Added optional reduction of timestamp precision via `Logger->useMicrosecondTimestamps(false)`, disabling it gets you a bit of performance boost but reduces the precision to the second instead of microsecond
301  * Added possibility to skip some extra stack frames in IntrospectionProcessor if you have some library wrapping Monolog that is always adding frames
302  * Added `Logger->withName` to clone a logger (keeping all handlers) with a new name
303  * Added FluentdFormatter for the Fluentd unix socket protocol
304  * Added HandlerWrapper base class to ease the creation of handler wrappers, just extend it and override as needed
305  * Added support for replacing context sub-keys using `%context.*%` in LineFormatter
306  * Added support for `payload` context value in RollbarHandler
307  * Added setRelease to RavenHandler to describe the application version, sent with every log
308  * Added support for `fingerprint` context value in RavenHandler
309  * Fixed JSON encoding errors that would gobble up the whole log record, we now handle those more gracefully by dropping chars as needed
310  * Fixed write timeouts in SocketHandler and derivatives, set to 10sec by default, lower it with `setWritingTimeout()`
311  * Fixed PHP7 compatibility with regard to Exception/Throwable handling in a few places
312
313### 1.17.2 (2015-10-14)
314
315  * Fixed ErrorHandler compatibility with non-Monolog PSR-3 loggers
316  * Fixed SlackHandler handling to use slack functionalities better
317  * Fixed SwiftMailerHandler bug when sending multiple emails they all had the same id
318  * Fixed 5.3 compatibility regression
319
320### 1.17.1 (2015-08-31)
321
322  * Fixed RollbarHandler triggering PHP notices
323
324### 1.17.0 (2015-08-30)
325
326  * Added support for `checksum` and `release` context/extra values in RavenHandler
327  * Added better support for exceptions in RollbarHandler
328  * Added UidProcessor::getUid
329  * Added support for showing the resource type in NormalizedFormatter
330  * Fixed IntrospectionProcessor triggering PHP notices
331
332### 1.16.0 (2015-08-09)
333
334  * Added IFTTTHandler to notify ifttt.com triggers
335  * Added Logger::setHandlers() to allow setting/replacing all handlers
336  * Added $capSize in RedisHandler to cap the log size
337  * Fixed StreamHandler creation of directory to only trigger when the first log write happens
338  * Fixed bug in the handling of curl failures
339  * Fixed duplicate logging of fatal errors when both error and fatal error handlers are registered in monolog's ErrorHandler
340  * Fixed missing fatal errors records with handlers that need to be closed to flush log records
341  * Fixed TagProcessor::addTags support for associative arrays
342
343### 1.15.0 (2015-07-12)
344
345  * Added addTags and setTags methods to change a TagProcessor
346  * Added automatic creation of directories if they are missing for a StreamHandler to open a log file
347  * Added retry functionality to Loggly, Cube and Mandrill handlers so they retry up to 5 times in case of network failure
348  * Fixed process exit code being incorrectly reset to 0 if ErrorHandler::registerExceptionHandler was used
349  * Fixed HTML/JS escaping in BrowserConsoleHandler
350  * Fixed JSON encoding errors being silently suppressed (PHP 5.5+ only)
351
352### 1.14.0 (2015-06-19)
353
354  * Added PHPConsoleHandler to send record to Chrome's PHP Console extension and library
355  * Added support for objects implementing __toString in the NormalizerFormatter
356  * Added support for HipChat's v2 API in HipChatHandler
357  * Added Logger::setTimezone() to initialize the timezone monolog should use in case date.timezone isn't correct for your app
358  * Added an option to send formatted message instead of the raw record on PushoverHandler via ->useFormattedMessage(true)
359  * Fixed curl errors being silently suppressed
360
361### 1.13.1 (2015-03-09)
362
363  * Fixed regression in HipChat requiring a new token to be created
364
365### 1.13.0 (2015-03-05)
366
367  * Added Registry::hasLogger to check for the presence of a logger instance
368  * Added context.user support to RavenHandler
369  * Added HipChat API v2 support in the HipChatHandler
370  * Added NativeMailerHandler::addParameter to pass params to the mail() process
371  * Added context data to SlackHandler when $includeContextAndExtra is true
372  * Added ability to customize the Swift_Message per-email in SwiftMailerHandler
373  * Fixed SwiftMailerHandler to lazily create message instances if a callback is provided
374  * Fixed serialization of INF and NaN values in Normalizer and LineFormatter
375
376### 1.12.0 (2014-12-29)
377
378  * Break: HandlerInterface::isHandling now receives a partial record containing only a level key. This was always the intent and does not break any Monolog handler but is strictly speaking a BC break and you should check if you relied on any other field in your own handlers.
379  * Added PsrHandler to forward records to another PSR-3 logger
380  * Added SamplingHandler to wrap around a handler and include only every Nth record
381  * Added MongoDBFormatter to support better storage with MongoDBHandler (it must be enabled manually for now)
382  * Added exception codes in the output of most formatters
383  * Added LineFormatter::includeStacktraces to enable exception stack traces in logs (uses more than one line)
384  * Added $useShortAttachment to SlackHandler to minify attachment size and $includeExtra to append extra data
385  * Added $host to HipChatHandler for users of private instances
386  * Added $transactionName to NewRelicHandler and support for a transaction_name context value
387  * Fixed MandrillHandler to avoid outputting API call responses
388  * Fixed some non-standard behaviors in SyslogUdpHandler
389
390### 1.11.0 (2014-09-30)
391
392  * Break: The NewRelicHandler extra and context data are now prefixed with extra_ and context_ to avoid clashes. Watch out if you have scripts reading those from the API and rely on names
393  * Added WhatFailureGroupHandler to suppress any exception coming from the wrapped handlers and avoid chain failures if a logging service fails
394  * Added MandrillHandler to send emails via the Mandrillapp.com API
395  * Added SlackHandler to log records to a Slack.com account
396  * Added FleepHookHandler to log records to a Fleep.io account
397  * Added LogglyHandler::addTag to allow adding tags to an existing handler
398  * Added $ignoreEmptyContextAndExtra to LineFormatter to avoid empty [] at the end
399  * Added $useLocking to StreamHandler and RotatingFileHandler to enable flock() while writing
400  * Added support for PhpAmqpLib in the AmqpHandler
401  * Added FingersCrossedHandler::clear and BufferHandler::clear to reset them between batches in long running jobs
402  * Added support for adding extra fields from $_SERVER in the WebProcessor
403  * Fixed support for non-string values in PrsLogMessageProcessor
404  * Fixed SwiftMailer messages being sent with the wrong date in long running scripts
405  * Fixed minor PHP 5.6 compatibility issues
406  * Fixed BufferHandler::close being called twice
407
408### 1.10.0 (2014-06-04)
409
410  * Added Logger::getHandlers() and Logger::getProcessors() methods
411  * Added $passthruLevel argument to FingersCrossedHandler to let it always pass some records through even if the trigger level is not reached
412  * Added support for extra data in NewRelicHandler
413  * Added $expandNewlines flag to the ErrorLogHandler to create multiple log entries when a message has multiple lines
414
415### 1.9.1 (2014-04-24)
416
417  * Fixed regression in RotatingFileHandler file permissions
418  * Fixed initialization of the BufferHandler to make sure it gets flushed after receiving records
419  * Fixed ChromePHPHandler and FirePHPHandler's activation strategies to be more conservative
420
421### 1.9.0 (2014-04-20)
422
423  * Added LogEntriesHandler to send logs to a LogEntries account
424  * Added $filePermissions to tweak file mode on StreamHandler and RotatingFileHandler
425  * Added $useFormatting flag to MemoryProcessor to make it send raw data in bytes
426  * Added support for table formatting in FirePHPHandler via the table context key
427  * Added a TagProcessor to add tags to records, and support for tags in RavenHandler
428  * Added $appendNewline flag to the JsonFormatter to enable using it when logging to files
429  * Added sound support to the PushoverHandler
430  * Fixed multi-threading support in StreamHandler
431  * Fixed empty headers issue when ChromePHPHandler received no records
432  * Fixed default format of the ErrorLogHandler
433
434### 1.8.0 (2014-03-23)
435
436  * Break: the LineFormatter now strips newlines by default because this was a bug, set $allowInlineLineBreaks to true if you need them
437  * Added BrowserConsoleHandler to send logs to any browser's console via console.log() injection in the output
438  * Added FilterHandler to filter records and only allow those of a given list of levels through to the wrapped handler
439  * Added FlowdockHandler to send logs to a Flowdock account
440  * Added RollbarHandler to send logs to a Rollbar account
441  * Added HtmlFormatter to send prettier log emails with colors for each log level
442  * Added GitProcessor to add the current branch/commit to extra record data
443  * Added a Monolog\Registry class to allow easier global access to pre-configured loggers
444  * Added support for the new official graylog2/gelf-php lib for GelfHandler, upgrade if you can by replacing the mlehner/gelf-php requirement
445  * Added support for HHVM
446  * Added support for Loggly batch uploads
447  * Added support for tweaking the content type and encoding in NativeMailerHandler
448  * Added $skipClassesPartials to tweak the ignored classes in the IntrospectionProcessor
449  * Fixed batch request support in GelfHandler
450
451### 1.7.0 (2013-11-14)
452
453  * Added ElasticSearchHandler to send logs to an Elastic Search server
454  * Added DynamoDbHandler and ScalarFormatter to send logs to Amazon's Dynamo DB
455  * Added SyslogUdpHandler to send logs to a remote syslogd server
456  * Added LogglyHandler to send logs to a Loggly account
457  * Added $level to IntrospectionProcessor so it only adds backtraces when needed
458  * Added $version to LogstashFormatter to allow using the new v1 Logstash format
459  * Added $appName to NewRelicHandler
460  * Added configuration of Pushover notification retries/expiry
461  * Added $maxColumnWidth to NativeMailerHandler to change the 70 chars default
462  * Added chainability to most setters for all handlers
463  * Fixed RavenHandler batch processing so it takes the message from the record with highest priority
464  * Fixed HipChatHandler batch processing so it sends all messages at once
465  * Fixed issues with eAccelerator
466  * Fixed and improved many small things
467
468### 1.6.0 (2013-07-29)
469
470  * Added HipChatHandler to send logs to a HipChat chat room
471  * Added ErrorLogHandler to send logs to PHP's error_log function
472  * Added NewRelicHandler to send logs to NewRelic's service
473  * Added Monolog\ErrorHandler helper class to register a Logger as exception/error/fatal handler
474  * Added ChannelLevelActivationStrategy for the FingersCrossedHandler to customize levels by channel
475  * Added stack traces output when normalizing exceptions (json output & co)
476  * Added Monolog\Logger::API constant (currently 1)
477  * Added support for ChromePHP's v4.0 extension
478  * Added support for message priorities in PushoverHandler, see $highPriorityLevel and $emergencyLevel
479  * Added support for sending messages to multiple users at once with the PushoverHandler
480  * Fixed RavenHandler's support for batch sending of messages (when behind a Buffer or FingersCrossedHandler)
481  * Fixed normalization of Traversables with very large data sets, only the first 1000 items are shown now
482  * Fixed issue in RotatingFileHandler when an open_basedir restriction is active
483  * Fixed minor issues in RavenHandler and bumped the API to Raven 0.5.0
484  * Fixed SyslogHandler issue when many were used concurrently with different facilities
485
486### 1.5.0 (2013-04-23)
487
488  * Added ProcessIdProcessor to inject the PID in log records
489  * Added UidProcessor to inject a unique identifier to all log records of one request/run
490  * Added support for previous exceptions in the LineFormatter exception serialization
491  * Added Monolog\Logger::getLevels() to get all available levels
492  * Fixed ChromePHPHandler so it avoids sending headers larger than Chrome can handle
493
494### 1.4.1 (2013-04-01)
495
496  * Fixed exception formatting in the LineFormatter to be more minimalistic
497  * Fixed RavenHandler's handling of context/extra data, requires Raven client >0.1.0
498  * Fixed log rotation in RotatingFileHandler to work with long running scripts spanning multiple days
499  * Fixed WebProcessor array access so it checks for data presence
500  * Fixed Buffer, Group and FingersCrossed handlers to make use of their processors
501
502### 1.4.0 (2013-02-13)
503
504  * Added RedisHandler to log to Redis via the Predis library or the phpredis extension
505  * Added ZendMonitorHandler to log to the Zend Server monitor
506  * Added the possibility to pass arrays of handlers and processors directly in the Logger constructor
507  * Added `$useSSL` option to the PushoverHandler which is enabled by default
508  * Fixed ChromePHPHandler and FirePHPHandler issue when multiple instances are used simultaneously
509  * Fixed header injection capability in the NativeMailHandler
510
511### 1.3.1 (2013-01-11)
512
513  * Fixed LogstashFormatter to be usable with stream handlers
514  * Fixed GelfMessageFormatter levels on Windows
515
516### 1.3.0 (2013-01-08)
517
518  * Added PSR-3 compliance, the `Monolog\Logger` class is now an instance of `Psr\Log\LoggerInterface`
519  * Added PsrLogMessageProcessor that you can selectively enable for full PSR-3 compliance
520  * Added LogstashFormatter (combine with SocketHandler or StreamHandler to send logs to Logstash)
521  * Added PushoverHandler to send mobile notifications
522  * Added CouchDBHandler and DoctrineCouchDBHandler
523  * Added RavenHandler to send data to Sentry servers
524  * Added support for the new MongoClient class in MongoDBHandler
525  * Added microsecond precision to log records' timestamps
526  * Added `$flushOnOverflow` param to BufferHandler to flush by batches instead of losing
527    the oldest entries
528  * Fixed normalization of objects with cyclic references
529
530### 1.2.1 (2012-08-29)
531
532  * Added new $logopts arg to SyslogHandler to provide custom openlog options
533  * Fixed fatal error in SyslogHandler
534
535### 1.2.0 (2012-08-18)
536
537  * Added AmqpHandler (for use with AMQP servers)
538  * Added CubeHandler
539  * Added NativeMailerHandler::addHeader() to send custom headers in mails
540  * Added the possibility to specify more than one recipient in NativeMailerHandler
541  * Added the possibility to specify float timeouts in SocketHandler
542  * Added NOTICE and EMERGENCY levels to conform with RFC 5424
543  * Fixed the log records to use the php default timezone instead of UTC
544  * Fixed BufferHandler not being flushed properly on PHP fatal errors
545  * Fixed normalization of exotic resource types
546  * Fixed the default format of the SyslogHandler to avoid duplicating datetimes in syslog
547
548### 1.1.0 (2012-04-23)
549
550  * Added Monolog\Logger::isHandling() to check if a handler will
551    handle the given log level
552  * Added ChromePHPHandler
553  * Added MongoDBHandler
554  * Added GelfHandler (for use with Graylog2 servers)
555  * Added SocketHandler (for use with syslog-ng for example)
556  * Added NormalizerFormatter
557  * Added the possibility to change the activation strategy of the FingersCrossedHandler
558  * Added possibility to show microseconds in logs
559  * Added `server` and `referer` to WebProcessor output
560
561### 1.0.2 (2011-10-24)
562
563  * Fixed bug in IE with large response headers and FirePHPHandler
564
565### 1.0.1 (2011-08-25)
566
567  * Added MemoryPeakUsageProcessor and MemoryUsageProcessor
568  * Added Monolog\Logger::getName() to get a logger's channel name
569
570### 1.0.0 (2011-07-06)
571
572  * Added IntrospectionProcessor to get info from where the logger was called
573  * Fixed WebProcessor in CLI
574
575### 1.0.0-RC1 (2011-07-01)
576
577  * Initial release
578