1### 1.24.0 (2018-11-05) 2 3 * Added a `ResettableInterface` in order to reset/reset/clear/flush handlers and processors 4 * Added a `ProcessorInterface` as an optional way to label a class as being a processor (mostly useful for autowiring dependency containers) 5 * Added a way to log signals being received using Monolog\SignalHandler 6 * Added ability to customize error handling at the Logger level using Logger::setExceptionHandler 7 * Added InsightOpsHandler to migrate users of the LogEntriesHandler 8 * Added protection to NormalizerHandler against circular and very deep structures, it now stops normalizing at a depth of 9 9 * Added capture of stack traces to ErrorHandler when logging PHP errors 10 * Added RavenHandler support for a `contexts` context or extra key to forward that to Sentry's contexts 11 * Added forwarding of context info to FluentdFormatter 12 * Added SocketHandler::setChunkSize to override the default chunk size in case you must send large log lines to rsyslog for example 13 * Added ability to extend/override BrowserConsoleHandler 14 * Added SlackWebhookHandler::getWebhookUrl and SlackHandler::getToken to enable class extensibility 15 * Added SwiftMailerHandler::getSubjectFormatter to enable class extensibility 16 * Dropped official support for HHVM in test builds 17 * Fixed normalization of exception traces when call_user_func is used to avoid serializing objects and the data they contain 18 * Fixed naming of fields in Slack handler, all field names are now capitalized in all cases 19 * Fixed HipChatHandler bug where slack dropped messages randomly 20 * Fixed normalization of objects in Slack handlers 21 * Fixed support for PHP7's Throwable in NewRelicHandler 22 * Fixed race bug when StreamHandler sometimes incorrectly reported it failed to create a directory 23 * Fixed table row styling issues in HtmlFormatter 24 * Fixed RavenHandler dropping the message when logging exception 25 * Fixed WhatFailureGroupHandler skipping processors when using handleBatch 26 and implement it where possible 27 * Fixed display of anonymous class names 28 29### 1.23.0 (2017-06-19) 30 31 * Improved SyslogUdpHandler's support for RFC5424 and added optional `$ident` argument 32 * Fixed GelfHandler truncation to be per field and not per message 33 * Fixed compatibility issue with PHP <5.3.6 34 * Fixed support for headless Chrome in ChromePHPHandler 35 * Fixed support for latest Aws SDK in DynamoDbHandler 36 * Fixed support for SwiftMailer 6.0+ in SwiftMailerHandler 37 38### 1.22.1 (2017-03-13) 39 40 * Fixed lots of minor issues in the new Slack integrations 41 * Fixed support for allowInlineLineBreaks in LineFormatter when formatting exception backtraces 42 43### 1.22.0 (2016-11-26) 44 45 * Added SlackbotHandler and SlackWebhookHandler to set up Slack integration more easily 46 * Added MercurialProcessor to add mercurial revision and branch names to log records 47 * Added support for AWS SDK v3 in DynamoDbHandler 48 * Fixed fatal errors occuring when normalizing generators that have been fully consumed 49 * Fixed RollbarHandler to include a level (rollbar level), monolog_level (original name), channel and datetime (unix) 50 * Fixed RollbarHandler not flushing records automatically, calling close() explicitly is not necessary anymore 51 * Fixed SyslogUdpHandler to avoid sending empty frames 52 * Fixed a few PHP 7.0 and 7.1 compatibility issues 53 54### 1.21.0 (2016-07-29) 55 56 * Break: Reverted the addition of $context when the ErrorHandler handles regular php errors from 1.20.0 as it was causing issues 57 * Added support for more formats in RotatingFileHandler::setFilenameFormat as long as they have Y, m and d in order 58 * Added ability to format the main line of text the SlackHandler sends by explictly setting a formatter on the handler 59 * Added information about SoapFault instances in NormalizerFormatter 60 * Added $handleOnlyReportedErrors option on ErrorHandler::registerErrorHandler (default true) to allow logging of all errors no matter the error_reporting level 61 62### 1.20.0 (2016-07-02) 63 64 * Added FingersCrossedHandler::activate() to manually trigger the handler regardless of the activation policy 65 * Added StreamHandler::getUrl to retrieve the stream's URL 66 * Added ability to override addRow/addTitle in HtmlFormatter 67 * Added the $context to context information when the ErrorHandler handles a regular php error 68 * Deprecated RotatingFileHandler::setFilenameFormat to only support 3 formats: Y, Y-m and Y-m-d 69 * Fixed WhatFailureGroupHandler to work with PHP7 throwables 70 * Fixed a few minor bugs 71 72### 1.19.0 (2016-04-12) 73 74 * 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 75 * Added DeduplicationHandler to remove duplicate records from notifications across multiple requests, useful for email or other notifications on errors 76 * Added ability to use `%message%` and other LineFormatter replacements in the subject line of emails sent with NativeMailHandler and SwiftMailerHandler 77 * Fixed HipChatHandler handling of long messages 78 79### 1.18.2 (2016-04-02) 80 81 * Fixed ElasticaFormatter to use more precise dates 82 * Fixed GelfMessageFormatter sending too long messages 83 84### 1.18.1 (2016-03-13) 85 86 * Fixed SlackHandler bug where slack dropped messages randomly 87 * Fixed RedisHandler issue when using with the PHPRedis extension 88 * Fixed AmqpHandler content-type being incorrectly set when using with the AMQP extension 89 * Fixed BrowserConsoleHandler regression 90 91### 1.18.0 (2016-03-01) 92 93 * 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 94 * Added possibility to skip some extra stack frames in IntrospectionProcessor if you have some library wrapping Monolog that is always adding frames 95 * Added `Logger->withName` to clone a logger (keeping all handlers) with a new name 96 * Added FluentdFormatter for the Fluentd unix socket protocol 97 * Added HandlerWrapper base class to ease the creation of handler wrappers, just extend it and override as needed 98 * Added support for replacing context sub-keys using `%context.*%` in LineFormatter 99 * Added support for `payload` context value in RollbarHandler 100 * Added setRelease to RavenHandler to describe the application version, sent with every log 101 * Added support for `fingerprint` context value in RavenHandler 102 * Fixed JSON encoding errors that would gobble up the whole log record, we now handle those more gracefully by dropping chars as needed 103 * Fixed write timeouts in SocketHandler and derivatives, set to 10sec by default, lower it with `setWritingTimeout()` 104 * Fixed PHP7 compatibility with regard to Exception/Throwable handling in a few places 105 106### 1.17.2 (2015-10-14) 107 108 * Fixed ErrorHandler compatibility with non-Monolog PSR-3 loggers 109 * Fixed SlackHandler handling to use slack functionalities better 110 * Fixed SwiftMailerHandler bug when sending multiple emails they all had the same id 111 * Fixed 5.3 compatibility regression 112 113### 1.17.1 (2015-08-31) 114 115 * Fixed RollbarHandler triggering PHP notices 116 117### 1.17.0 (2015-08-30) 118 119 * Added support for `checksum` and `release` context/extra values in RavenHandler 120 * Added better support for exceptions in RollbarHandler 121 * Added UidProcessor::getUid 122 * Added support for showing the resource type in NormalizedFormatter 123 * Fixed IntrospectionProcessor triggering PHP notices 124 125### 1.16.0 (2015-08-09) 126 127 * Added IFTTTHandler to notify ifttt.com triggers 128 * Added Logger::setHandlers() to allow setting/replacing all handlers 129 * Added $capSize in RedisHandler to cap the log size 130 * Fixed StreamHandler creation of directory to only trigger when the first log write happens 131 * Fixed bug in the handling of curl failures 132 * Fixed duplicate logging of fatal errors when both error and fatal error handlers are registered in monolog's ErrorHandler 133 * Fixed missing fatal errors records with handlers that need to be closed to flush log records 134 * Fixed TagProcessor::addTags support for associative arrays 135 136### 1.15.0 (2015-07-12) 137 138 * Added addTags and setTags methods to change a TagProcessor 139 * Added automatic creation of directories if they are missing for a StreamHandler to open a log file 140 * Added retry functionality to Loggly, Cube and Mandrill handlers so they retry up to 5 times in case of network failure 141 * Fixed process exit code being incorrectly reset to 0 if ErrorHandler::registerExceptionHandler was used 142 * Fixed HTML/JS escaping in BrowserConsoleHandler 143 * Fixed JSON encoding errors being silently suppressed (PHP 5.5+ only) 144 145### 1.14.0 (2015-06-19) 146 147 * Added PHPConsoleHandler to send record to Chrome's PHP Console extension and library 148 * Added support for objects implementing __toString in the NormalizerFormatter 149 * Added support for HipChat's v2 API in HipChatHandler 150 * Added Logger::setTimezone() to initialize the timezone monolog should use in case date.timezone isn't correct for your app 151 * Added an option to send formatted message instead of the raw record on PushoverHandler via ->useFormattedMessage(true) 152 * Fixed curl errors being silently suppressed 153 154### 1.13.1 (2015-03-09) 155 156 * Fixed regression in HipChat requiring a new token to be created 157 158### 1.13.0 (2015-03-05) 159 160 * Added Registry::hasLogger to check for the presence of a logger instance 161 * Added context.user support to RavenHandler 162 * Added HipChat API v2 support in the HipChatHandler 163 * Added NativeMailerHandler::addParameter to pass params to the mail() process 164 * Added context data to SlackHandler when $includeContextAndExtra is true 165 * Added ability to customize the Swift_Message per-email in SwiftMailerHandler 166 * Fixed SwiftMailerHandler to lazily create message instances if a callback is provided 167 * Fixed serialization of INF and NaN values in Normalizer and LineFormatter 168 169### 1.12.0 (2014-12-29) 170 171 * 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. 172 * Added PsrHandler to forward records to another PSR-3 logger 173 * Added SamplingHandler to wrap around a handler and include only every Nth record 174 * Added MongoDBFormatter to support better storage with MongoDBHandler (it must be enabled manually for now) 175 * Added exception codes in the output of most formatters 176 * Added LineFormatter::includeStacktraces to enable exception stack traces in logs (uses more than one line) 177 * Added $useShortAttachment to SlackHandler to minify attachment size and $includeExtra to append extra data 178 * Added $host to HipChatHandler for users of private instances 179 * Added $transactionName to NewRelicHandler and support for a transaction_name context value 180 * Fixed MandrillHandler to avoid outputing API call responses 181 * Fixed some non-standard behaviors in SyslogUdpHandler 182 183### 1.11.0 (2014-09-30) 184 185 * 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 186 * Added WhatFailureGroupHandler to suppress any exception coming from the wrapped handlers and avoid chain failures if a logging service fails 187 * Added MandrillHandler to send emails via the Mandrillapp.com API 188 * Added SlackHandler to log records to a Slack.com account 189 * Added FleepHookHandler to log records to a Fleep.io account 190 * Added LogglyHandler::addTag to allow adding tags to an existing handler 191 * Added $ignoreEmptyContextAndExtra to LineFormatter to avoid empty [] at the end 192 * Added $useLocking to StreamHandler and RotatingFileHandler to enable flock() while writing 193 * Added support for PhpAmqpLib in the AmqpHandler 194 * Added FingersCrossedHandler::clear and BufferHandler::clear to reset them between batches in long running jobs 195 * Added support for adding extra fields from $_SERVER in the WebProcessor 196 * Fixed support for non-string values in PrsLogMessageProcessor 197 * Fixed SwiftMailer messages being sent with the wrong date in long running scripts 198 * Fixed minor PHP 5.6 compatibility issues 199 * Fixed BufferHandler::close being called twice 200 201### 1.10.0 (2014-06-04) 202 203 * Added Logger::getHandlers() and Logger::getProcessors() methods 204 * Added $passthruLevel argument to FingersCrossedHandler to let it always pass some records through even if the trigger level is not reached 205 * Added support for extra data in NewRelicHandler 206 * Added $expandNewlines flag to the ErrorLogHandler to create multiple log entries when a message has multiple lines 207 208### 1.9.1 (2014-04-24) 209 210 * Fixed regression in RotatingFileHandler file permissions 211 * Fixed initialization of the BufferHandler to make sure it gets flushed after receiving records 212 * Fixed ChromePHPHandler and FirePHPHandler's activation strategies to be more conservative 213 214### 1.9.0 (2014-04-20) 215 216 * Added LogEntriesHandler to send logs to a LogEntries account 217 * Added $filePermissions to tweak file mode on StreamHandler and RotatingFileHandler 218 * Added $useFormatting flag to MemoryProcessor to make it send raw data in bytes 219 * Added support for table formatting in FirePHPHandler via the table context key 220 * Added a TagProcessor to add tags to records, and support for tags in RavenHandler 221 * Added $appendNewline flag to the JsonFormatter to enable using it when logging to files 222 * Added sound support to the PushoverHandler 223 * Fixed multi-threading support in StreamHandler 224 * Fixed empty headers issue when ChromePHPHandler received no records 225 * Fixed default format of the ErrorLogHandler 226 227### 1.8.0 (2014-03-23) 228 229 * Break: the LineFormatter now strips newlines by default because this was a bug, set $allowInlineLineBreaks to true if you need them 230 * Added BrowserConsoleHandler to send logs to any browser's console via console.log() injection in the output 231 * Added FilterHandler to filter records and only allow those of a given list of levels through to the wrapped handler 232 * Added FlowdockHandler to send logs to a Flowdock account 233 * Added RollbarHandler to send logs to a Rollbar account 234 * Added HtmlFormatter to send prettier log emails with colors for each log level 235 * Added GitProcessor to add the current branch/commit to extra record data 236 * Added a Monolog\Registry class to allow easier global access to pre-configured loggers 237 * Added support for the new official graylog2/gelf-php lib for GelfHandler, upgrade if you can by replacing the mlehner/gelf-php requirement 238 * Added support for HHVM 239 * Added support for Loggly batch uploads 240 * Added support for tweaking the content type and encoding in NativeMailerHandler 241 * Added $skipClassesPartials to tweak the ignored classes in the IntrospectionProcessor 242 * Fixed batch request support in GelfHandler 243 244### 1.7.0 (2013-11-14) 245 246 * Added ElasticSearchHandler to send logs to an Elastic Search server 247 * Added DynamoDbHandler and ScalarFormatter to send logs to Amazon's Dynamo DB 248 * Added SyslogUdpHandler to send logs to a remote syslogd server 249 * Added LogglyHandler to send logs to a Loggly account 250 * Added $level to IntrospectionProcessor so it only adds backtraces when needed 251 * Added $version to LogstashFormatter to allow using the new v1 Logstash format 252 * Added $appName to NewRelicHandler 253 * Added configuration of Pushover notification retries/expiry 254 * Added $maxColumnWidth to NativeMailerHandler to change the 70 chars default 255 * Added chainability to most setters for all handlers 256 * Fixed RavenHandler batch processing so it takes the message from the record with highest priority 257 * Fixed HipChatHandler batch processing so it sends all messages at once 258 * Fixed issues with eAccelerator 259 * Fixed and improved many small things 260 261### 1.6.0 (2013-07-29) 262 263 * Added HipChatHandler to send logs to a HipChat chat room 264 * Added ErrorLogHandler to send logs to PHP's error_log function 265 * Added NewRelicHandler to send logs to NewRelic's service 266 * Added Monolog\ErrorHandler helper class to register a Logger as exception/error/fatal handler 267 * Added ChannelLevelActivationStrategy for the FingersCrossedHandler to customize levels by channel 268 * Added stack traces output when normalizing exceptions (json output & co) 269 * Added Monolog\Logger::API constant (currently 1) 270 * Added support for ChromePHP's v4.0 extension 271 * Added support for message priorities in PushoverHandler, see $highPriorityLevel and $emergencyLevel 272 * Added support for sending messages to multiple users at once with the PushoverHandler 273 * Fixed RavenHandler's support for batch sending of messages (when behind a Buffer or FingersCrossedHandler) 274 * Fixed normalization of Traversables with very large data sets, only the first 1000 items are shown now 275 * Fixed issue in RotatingFileHandler when an open_basedir restriction is active 276 * Fixed minor issues in RavenHandler and bumped the API to Raven 0.5.0 277 * Fixed SyslogHandler issue when many were used concurrently with different facilities 278 279### 1.5.0 (2013-04-23) 280 281 * Added ProcessIdProcessor to inject the PID in log records 282 * Added UidProcessor to inject a unique identifier to all log records of one request/run 283 * Added support for previous exceptions in the LineFormatter exception serialization 284 * Added Monolog\Logger::getLevels() to get all available levels 285 * Fixed ChromePHPHandler so it avoids sending headers larger than Chrome can handle 286 287### 1.4.1 (2013-04-01) 288 289 * Fixed exception formatting in the LineFormatter to be more minimalistic 290 * Fixed RavenHandler's handling of context/extra data, requires Raven client >0.1.0 291 * Fixed log rotation in RotatingFileHandler to work with long running scripts spanning multiple days 292 * Fixed WebProcessor array access so it checks for data presence 293 * Fixed Buffer, Group and FingersCrossed handlers to make use of their processors 294 295### 1.4.0 (2013-02-13) 296 297 * Added RedisHandler to log to Redis via the Predis library or the phpredis extension 298 * Added ZendMonitorHandler to log to the Zend Server monitor 299 * Added the possibility to pass arrays of handlers and processors directly in the Logger constructor 300 * Added `$useSSL` option to the PushoverHandler which is enabled by default 301 * Fixed ChromePHPHandler and FirePHPHandler issue when multiple instances are used simultaneously 302 * Fixed header injection capability in the NativeMailHandler 303 304### 1.3.1 (2013-01-11) 305 306 * Fixed LogstashFormatter to be usable with stream handlers 307 * Fixed GelfMessageFormatter levels on Windows 308 309### 1.3.0 (2013-01-08) 310 311 * Added PSR-3 compliance, the `Monolog\Logger` class is now an instance of `Psr\Log\LoggerInterface` 312 * Added PsrLogMessageProcessor that you can selectively enable for full PSR-3 compliance 313 * Added LogstashFormatter (combine with SocketHandler or StreamHandler to send logs to Logstash) 314 * Added PushoverHandler to send mobile notifications 315 * Added CouchDBHandler and DoctrineCouchDBHandler 316 * Added RavenHandler to send data to Sentry servers 317 * Added support for the new MongoClient class in MongoDBHandler 318 * Added microsecond precision to log records' timestamps 319 * Added `$flushOnOverflow` param to BufferHandler to flush by batches instead of losing 320 the oldest entries 321 * Fixed normalization of objects with cyclic references 322 323### 1.2.1 (2012-08-29) 324 325 * Added new $logopts arg to SyslogHandler to provide custom openlog options 326 * Fixed fatal error in SyslogHandler 327 328### 1.2.0 (2012-08-18) 329 330 * Added AmqpHandler (for use with AMQP servers) 331 * Added CubeHandler 332 * Added NativeMailerHandler::addHeader() to send custom headers in mails 333 * Added the possibility to specify more than one recipient in NativeMailerHandler 334 * Added the possibility to specify float timeouts in SocketHandler 335 * Added NOTICE and EMERGENCY levels to conform with RFC 5424 336 * Fixed the log records to use the php default timezone instead of UTC 337 * Fixed BufferHandler not being flushed properly on PHP fatal errors 338 * Fixed normalization of exotic resource types 339 * Fixed the default format of the SyslogHandler to avoid duplicating datetimes in syslog 340 341### 1.1.0 (2012-04-23) 342 343 * Added Monolog\Logger::isHandling() to check if a handler will 344 handle the given log level 345 * Added ChromePHPHandler 346 * Added MongoDBHandler 347 * Added GelfHandler (for use with Graylog2 servers) 348 * Added SocketHandler (for use with syslog-ng for example) 349 * Added NormalizerFormatter 350 * Added the possibility to change the activation strategy of the FingersCrossedHandler 351 * Added possibility to show microseconds in logs 352 * Added `server` and `referer` to WebProcessor output 353 354### 1.0.2 (2011-10-24) 355 356 * Fixed bug in IE with large response headers and FirePHPHandler 357 358### 1.0.1 (2011-08-25) 359 360 * Added MemoryPeakUsageProcessor and MemoryUsageProcessor 361 * Added Monolog\Logger::getName() to get a logger's channel name 362 363### 1.0.0 (2011-07-06) 364 365 * Added IntrospectionProcessor to get info from where the logger was called 366 * Fixed WebProcessor in CLI 367 368### 1.0.0-RC1 (2011-07-01) 369 370 * Initial release 371