- Avoid deprecated
utf8_encode
function gabrielrbarbosa #661 #662
-
The maximum number of breadcrumbs can now be configured between 0-100 (inclusive) #652
-
Raised the default maximum number of breadcrumbs to 50 #652
-
Add a
Report::getFeatureFlags
method to allow accessing feature flags in callbacks #653
- New APIs to support feature flag and experiment functionality. For more information, please see https://docs.bugsnag.com/product/features-experiments. #646
- Improve serialisation of backed enums. Previously a backed enum would JSON encode to their backing value, but will now include the enum name like
EnumName::CaseName (value)
#639
- A number of errors in docblocks have been corrected xPaw #633 #637
- Handle serialising pure enums when added as metadata. Previously a pure enum would be JSON encoded as
null
, but will now be converted to a string likeEnumName::CaseName
#639 - Remove use of the deprecated
strftime
function #640 - Fix session throttling when storage backend doesn't store integers #643
- Avoid JSON encoding event payloads more than once, where possible #628
- Add the
ReturnTypeWillChange
toBugsnag\Breadcrumbs\Recorder
to avoid a deprecation in PHP 8.1 #630
-
Out of memory errors will now be reported by increasing the memory limit by 5 MiB. Use the new
memoryLimitIncrease
configuration option to change the amount of memory, or set it tonull
to disable the increase entirely. #621 -
Add a "discard classes" configuration option that allows events to be discarded based on the exception class name or PHP error name #622
-
Add a "redacted keys" configuration option. This is similar to
filters
but allows both strings and regexes. String matching is exact but case-insensitive. Regex matching allows for partial and wildcard matching. #623
- The
filters
configuration option is now deprecated asredactedKeys
can express everything that filters could and more.
- Add a default timeout & connect_timeout to Guzzle instances created by bugsnag-php. This does not apply if you are providing a custom Guzzle instance. #616
This release changes how Bugsnag detects the error suppression operator in combination with the errorReportingLevel
configuration option, for PHP 8 compatibility. Bugsnag's errorReportingLevel
must now be a subset of error_reporting
— i.e. every error level in errorReportingLevel
must also be in error_reporting
If you use the errorReportingLevel
option, you may need to change your Bugsnag or PHP configuration in order to report all expected errors. See PR #611 for more details
- Improve the display of breadrumbs in the Bugsnag app by including milliseconds in timestamps #612
- Make
Configuration::shouldIgnoreErrorCode
compatible with PHP 8 by requiring theerrorReportingLevel
option to be a subset oferror_reporting
#611
This release fixes several issues with Bugsnag's error handlers that caused it to affect the behaviour of shutdown functions (#475) and CLI script exit codes (#523). This does not apply if you are using the Laravel or Symfony integrations, as they use separate methods of error handling.
These bugs have been fixed and so registering Bugsnag's error handlers should not cause any change to PHP's default behaviour. Make sure that PHP's display_errors
option is disabled in production environments, as exceptions and errors will now go through PHP's default handling.
-
The previous error and exception handler will now always be called
-
Exceptions raised by the previous exception handler will now be reported
-
The default PHP exception handler will now be called, unless this is prevented by a previous exception handler
-
Avoid calling
method_exists
on non-objects #603
Bugsnag\Handler::registerWithPrevious
has been deprecated as calling previous error/exception handlers is now the default behaviour. Calls toregisterWithPrevious
can be safely replaced withBugsnag\Handler::register
-
Filters are now applied case insensitively, e.g. 'password' will now also match 'PASSWORD' #595
-
Cookies are now filtered from events by default #596
-
HTTP basic auth headers are filtered from events by default #597
-
Include all HTTP headers in request metadata #588
-
The
Client
andSessionTracker
now share a single Guzzle instance #587
-
Client::ENDPOINT
This is ambiguous as we have three separate endpoints UseConfiguration::NOTIFY_ENDPOINT
instead -
HttpClient::PAYLOAD_VERSION
This is ambiguous as there is a session payload version too UseHttpClient::NOTIFY_PAYLOAD_VERSION
instead -
Report::PAYLOAD_VERSION
As above. This was also unused by the notifier UseHttpClient::NOTIFY_PAYLOAD_VERSION
instead -
SessionTracker::$SESSION_PAYLOAD_VERSION
UseHttpClient::SESSION_PAYLOAD_VERSION
instead -
HttpClient::send
UseHttpClient::sendEvents
instead -
HttpClient::build
UseHttpClient::getEventPayload
instead -
HttpClient::postJson
UseHttpClient::deliverEvents
instead -
Using the
base_uri
/base_url
on a Guzzle instance The base URI is ambiguous as there are three separate endpoints which could be used, therefore all Guzzle requests now use absolute URIs. We will extract thebase_uri
/base_url
Guzzle option if one is set and use it as the notification endpoint URI, however this will be removed in the next major version Set the notification endpoint manually withConfiguration::setNotifyEndpoint
instead -
Calling
HttpClient::getHeaders
without providing a payload version This is deprecated as the version is ambiguous between the notification payload version and session payload version Call this with the correctHttpClient
payload version constants instead -
Client::getSessionClient
andConfiguration::getSessionClient
This method is dangerous to use as there is now only one Guzzle instance used across every request, so changing this client would also affect the notification client. Changes to this Guzzle client will now be ignored Use the$guzzle
parameter of theClient
constructor to customise the Guzzle client instead -
SessionData::$client
TheSessionData
class will be passed aSessionTracker
instead of aClient
instance in its constructor in the next major version -
SessionTracker
should be constructed with aHttpClient
TheSessionTracker
class should now always be passed aHttpClient
In this version it will construct its ownHttpClient
if one is not provided In the next major version, this fallback will be removed and passing aHttpClient
will be mandatory
- Fixed session tracker possibly raising a warning on PHP 7.2 and above #579
- Added support for Guzzle 7 #567
-
Added a strategy pattern for the Client shutdown behaviour #547
-
Replaced the dependency on phpdotenv with a simple "read" function that follows the same strategy ($_ENV, $_SERVER, getenv()) #511
-
Removed the length restriction on the Breadcrumb "name" field to match the API and allow large names to be sent. #544
- Make session delivery obey the release stage rules used by notify #542
-
More robust environment variable fetching GrahamCampbell #530
-
Support suppressed errors using "@" to ignore exceptions #531
-
Bump max payload limit to follow Bugsnag's backend limit to enable larger errors #538
Add the version of PHP to report information to allow easier diagnosis of version-specific issues.
- Add PHP version string to report and session payloads (device.runtimeVersions) #525
- Add
setProjectRootRegex
to enable directly setting the Project Root regex Javier Pérez Cid #514
- Check
php_uname
isn't disabled before attempting to retrieve hostname Graham Campbell #513
-
Improve performance by removing reflection calls from Client to Configuration #510
-
Prevent automatic collection of POST form data #511
- Allow modifying stack frame values by reference #507
- Added
insertBefore
toPipeline
andgetPipeline
toClient
to facilitate callback ordering #495
- Fix
notifyError(name, message, callback)
andnotifyException(ex, callback)
to ensure that reports are sent when callback != null
- Added
registerMiddleware
method for external middleware additions #478
- Added
GET
parameter support #472
- Speed up error handler #476
-
Updated the payload body version to 4.0 #467
-
Ensured reports always have a valid name Graham Campbell #463
-
Better name handling in breadcrumbs #427
- Deprecated the deploy API in favor of the build API
Calls to
deploy
will now redirect tobuild
. #454
- Re-added apiKey parameter to payload for older API versions #459
- Add support for tracking sessions and overall crash rate by setting
autoCaptureSessions
in configuration options. In addition, sessions can be indicated manually usingClient->startSession()
- Add 'addMetaData' method to reports #430
- Added Codeigniter example Don Pinkus
- Ensured
severity_reason
has sensible defaults #421
- Ensured Console Requests can handle empty argument array #413
- Added data acquisition for handled/unhandled feature #406
-
Added issue template to repository #401
-
Added Architecture guide to aid contributors #402
-
Added ConsoleRequest handler for extracting data out of console-run applications #398
-
Allow configuring strip path regex Paul Kuruvilla #390
-
Chain previously defined error handlers. This behavior can be activated using
registerWithPrevious
Matt Terwilliger #395 -
Make
Bugsnag\Handler
constructor public instead of protected to allow configuring custom clients Adam Vercimak #381
- Fix in-project detection and path stripping support for paths with repeated strings. Michael Tibben #384
- Include more deeply nested exception causes in reports
-
Return false from the error handler Graham Campbell #361
-
Add support for fallback app types Graham Campbell #363
- Add support for stacktrace modification Graham Campbell #351
- Fixed custom endpoints that mounted on a subfolder Graham Campbell #349
-
Integrate support for deploy tracking Graham Campbell #317
-
Add support for sending breadrumbs with error reports Graham Campbell #323
-
Support both Guzzle 5 and 6 Graham Campbell #332
-
Use Server API type as the default app type Graham Campbell #342
- Ensure the error timestamp is correct Graham Campbell #337
- Fixed certificate verification on Windows Graham Campbell #318
-
Fallback to localhost when HTTP_HOST is not set Graham Campbell #302
-
Fixed certificate verification on some systems Graham Campbell #308
- Lowered the minimum PHP version to 5.5.0 Graham Campbell #295
This is a major refactor to make the library clearer and easier to use. The minimum PHP version supported has been updated to 5.5.9. For upgrading instructions, see the upgrading guide.
-
Added a pipeline system for loading request information, app information, and other metadata. Each component can be individually loaded.
-
Make request resolution customizable #99
-
Replaced transport handling with Guzzle
-
notify()
,notifyException()
andnotifyError()
now accept a callable –instead ofmetaData
andseverity
– which can be used to modify any of the properties of an error report. -
Deprecated methods from v2 have been removed
-
Namespaced the library under
Bugsnag
- Every bug
- Fixed broken header parsing Graham Campbell #260
- Support completely overriding the user on errors Graham Campbell #209
-
Deal with large payloads and batching correctly Graham Campbell 64c00d3
-
Completed the fix for double input reading Graham Campbell #199
- Add ability to optionally merge metadata with existing properties, otherwise overwrite them Graham Campbell #162
-
Fix regression where an empty throwable message was cast to an empty string Graham Campbell #159
-
Restore support for PHP 5.2 Graham Campbell #148
-
Enforce integer type on stack frame line numbers Graham Campbell #157
-
Add stricter type checking for name and message contents Graham Campbell #130
- Fix filtering in the dashboard by IP address William Starling #123
- Fix failure to merge array due to type conflicts Jesse Collis #118
-
Support
timeout
settings outside of cURL Ivan Shalganov #111 -
Support PUT request payloads forgadenny #83
- Remove exception code filtering Duncan Hewett #113
-
Fixes an error thrown when sending an
Error
instance using PHP 7 Petr Bugyík #110 -
Fix error which occurs when
$_SERVER['SERVER_PORT']
is unset Michael Curry #109
-
Add support for PHP 7's Throwable Chris Stone #106
-
Fix errors which arise from from error payloads not encoded using UTF-8 GaetanNaulin #104 #105
- Added a debug flag to help diagnose notification problems
- Ensure no unnecessary code is executed when errors should be skipped
- Fix HHVM support for release 2.5.3
- Add support for custom curl options
- Add support for setHostname
- Extract file and line numbers better for crashes in eval'd code
- Collect and send snippets of source code to Bugsnag for easier debugging
- Update
setEndpoint
to accept full URLs - Add support for
Error#setGroupingHash
to customize error grouping insetBeforeNotify
functions
- Don't send $_ENV by default
- Warn if neither curl or fopen are available
- Remove cURL requirement, fallback to using fopen() if cURL not available
- Remove default for
setProjectRoot
since it was sometimes overzealous
- Fix boolean metadata handling
- Fix various metadata-encoding bugs
- Allow configuration of projectRoot stripping from stacktraces
- Fix calling
mb_detect_encoding
on non-objects
- Remove deprecated "fatal" severity state
- Prepare 'severity' feature for release
- Fix invalid utf-8 errors for people using iso-8859-1 by default.
- Make frames public on the stacktrace.
- Log any curl errors to the command line, increase default timeout to 10s
- Support previous exceptions on PHP >= 5.3.0
- Allow overriding notifier
- Use manual loading in place of custom autoloading
- Make cURL timeout configurable (thanks pauloschilling)
- Fix crash during stacktrace generation that happened when a closure was the first stackframe.
- Add
ErrorTypes::getLevelsForSeverity
function to fetch anerror_reporting
bitmask for a particular Bugsnag severity
- Fix crash during stacktrace generation for frameworks that have their own
shutdown_handler
method (eg. Laravel)
- Add
setAppType
for sending app type (script, request, resque, etc) - Add
setUser
for sending structured user data - Automatically send the severity level of each PHP error
- Added ability to chain setters (eg $bugsnag->setUser(...)->setReleaseStage(...))
- Add hostname collection to help with debugging
- Add
setBatchSending
function to disable batch sending of errors at the end of each request
- Fix bug which caused
setNotifyReleaseStages
being ignored
- Fix minor request meta-data issues introduced in 2.0.0
- Backwards-incompatible rewrite (using non-static access)
- Full suite of tests and Travis CI testing on PHP 5.2+
- Add
setBeforeNotify
functionality to add meta-data or execute code before each error is sent to Bugsnag
- Add
setAutoNotify
function to allow disabling of automatic error handling - Fix bug where error reporting level was being ignored for fatal errors
- Added a
setMetaData
function for sending custom data with every error
- Don't default
notifyReleaseStages
to anything to reduce confusion
- Fix PHP 5.2 bug with missing constants
- Protect against missing $_SERVER variables
- Send JSON POST params to Bugsnag if available
- Send HTTP headers to Bugsnag if available
- Remove unnecessary post to Bugsnag when error list is empty
- Fix bug with 'internal' stacktrace lines (missing line/file)
- Renamed default error classes for clarity
- Batch-send errors at the end of each request
Bugsnag::errorHandler
now respects PHP'serror_reporting
settings- Added
setErrorReportingLevel
function to override PHP's error_reporting settings
- First public release