All notable changes to this project will be documented in this file. See Keep a CHANGELOG for how to update this file. This project adheres to Semantic Versioning.
- stop using logger metadata for breadcrumbs\n- publish using github actions
- Add config option
exclude_errors
that excludes errors from being sent to the Honeybadger servers.(#443)
- Avoid local function captures in Telemetry.attrach_many/4 (#400)
- Update the minimum Elixir version to 1.10 (#390). Phoenix v1.5.11 causes a compilation error due to the new
mime
dependency, which requires Elixir 1.10+.
- Support latest telemetry dependency. (#397)
- fix callback spec arg type mismatch for handle_errors/2 from plugs (#384)
- Default
filter_args
tofalse
(#375)
- Make notification for
Logger.error
configurable (#380, @yukster)
- Show arguments in stacktrace for
FunctionClauseError
whenfilter_args = false
(#123, #373)
- Handle
extra_info
witherror_info
inHoneybadger.Backtrace.format_line
(#369, @abstractcoder) - Prevent infinite loop with
use_logger: true
when logging internal errors (#370)
- Encode notice message iodata before json serialize (#361)
- Call custom
filter_cgi_data/1
inNoticeFilter
(#353)
- Send notifications on error-level logs
- Added
ignored_domain
config with[:cowboy]
as default
- New fingerprint option and config for
Honeybadger.notify/2
. Thanks @brunozrk! (#305)
- Implement Jason.Encoder for RingBuffer (#294)
- Breadcrumbs on by default
- Safely sanitize invalid binaries when encoding JSON for notices.
- Fixes for Elixir 1.10 release (#259)
- Introducing Breadcrumbs (#235)! After enabling in the config with
breadcrumbs_enabled: true
, just callHoneybadger.add_breadcrumb/2
anywhere in your code and if an error is reported in that process, the breadcrumb event will be passed along with the Notice.
- Renamed Notifier to
honeybadger-elixir
and added language
- Call
Exception.blame/3
after normalizing string errors, which prevents reporint all string messages as Erlang errors. (#225)
- Added
:revision
configuration option - Automatically call
Exception.blame/3
to record additional information in the exception
When upgrading to v0.11, users should be aware of a few important changes:
- You must be on Elixir 1.7+ and Erlang/OTP 21+
- Due to the deprecation of
System.stacktrace/0
and the introduction of__STACKTRACE__
, manually callingHoneybadger.notify/3
will no longer include a stacktrace by default. See the issue discussion for more details - A stacktrace can be manually provided from within a rescue/catch block via the STACKTRACE macro, e.g.
Honeybadger.notify(SomeError, %{my: :context}, __STACKTRACE__)
- Switch from Erlang's
:error_logger
to an Elixir 1.7 and Erlang/OTP 21+Logger
backend. This provides more consistent error reporting and enhanced integration with Logger metadata. - Stop automatically extracting stacktraces for calls to
Honeybadger.notice/3
. The generated stacktrace was unreliably and frequently listed the Honeybadger reporter's internals, rather than application code. Manual calls tonotice/3
should happen within arescue/catch
block and use the__STACKTRACE__
macro.
- Use
Logger.metadata
as the basis for Honeybadger context in all logger generated notices
- Fix Map.t() isn't a valid dialyzer type (#198)
- Try to convert remote IP to string in case of parsing failure
- Prevent crashes reporting
:badmatch
when fetching the current stacktrace from a dead process. - Updated dependencies.
- Fix crashes caused by presence of structs in the context.
- Handle fetching peer info when using Plug 1.6. This is implemented in a backward compatible manner, so versions < 1.6 will continue to work.
- Fetch peer information for multiple plug versions
- Bump phoenix from 1.3.2 to 1.3.3
- Bump hackney from 1.12.1 to 1.13.0
- Replace Poison with Jason for JSON encoding.
- Reduce the log level used for dev mode warning.
- Update dependenices.
JSON encoding error.
- Send notifications even when the stacktrace isn't a list. Errors reported from the error logger can occasionally have a malformed stacktrace, which would raise another exception and prevent the notification from being sent.
- Use lazy logging within
Honeybadger.Client
, this allows compile time purging when the log level is set higher.
- Fix a regression which was causing
Not Found (404)
errors to be reported. - Fix an issue caused by hackney because of unread response bodies.
- Include function arity in notice backtraces. For example, the reported method
would be
notify/3
instead ofnotify
. - Include function arguments in notice backtraces. This is disabled by default,
and can be enabled by setting
filter_args
tofalse
in configuration.
- Allow
handle_errors
fromHoneybadger.Plug
to be overridden.
- Safely convert binary
:environment_name
values to an atom. If the environment was specified via{:system, "HONEYBADGER_ENV"}
and theHONEYBADGER_ENV
value didn't already exist as an atom the app would fail to boot. - Ignore the absence of
HONEYBADGER_API_KEY
when running in an excluded env
- Increases the logging around client activity (honeybadger-io#20).
- Explicitly allow sending notices with strings and maps. For example, it is now
possible to send a
RuntimeError
by callingHoneybadger.notify("oops!")
. - Added Honeybadger test mix task which can be invoked using
mix honeybadger.test
- Switch from
GenEvent
to implementinggen_event
behaviour. - Remove
error_logger
backend on application stop. - Use the latest exception's stacktrace whenever
notify
is called from atry
expression. - Namespace modules related to
Filter
andNoticeFilter
. This is largely an internal restructuring, but any custom filters that used theHoneybadger.FilterMixin
will need to specifyHoneybadger.Filter.Mixin
instead. - Drops
HTTPoison
in favor of directly usingHackney
, which gives us access to a connection pool. - Drops Meck and stubbing in favor of a local cowboy server (honeybadger-io#7).
- Starts a supervision tree with the client as a child.
- Report the controller and action name as component and action for phoenix apps
- Filtering CGI data now respects the
filter_disable_url
setting. All path related fields (ORIGINAL_FULLPATH
,QUERY_STRING
,PATH_INFO
) are filtered now. - Get the environment directly from
Mix.env
and always compare the environment names as atoms (honeybadger-io#94). - Changes notify from a macro to a function.
- Stops spawning new tasks for every error, instead relying on async handling in the client (honeybadger-io#88).
- Removes metrics reporting.
- Loosens httpoison dependency.
- Misc. bug fixes.
- ability to customize error names/messages,
- stops plug error notifications from being sent twice
- minor typo fixes
- dependency updates
- Reformatting the plug environment data sent to Honeybadger.
- This release removes warnings for Elixir 1.3.0 and covers v1.4.0-dev as of
2016-07-22. There was also a switch to using
:native
FromUnits
to match thePlug.Logger
usage of:erlang.convert_time_unit
. This maintains consistency betweenHoneybadger.Logger
andPlug.Logger
.
- Honeybadger now collects successful response times, aggregates them and sends them to the Honeybadger API! You can see request metric data from the metrics tab on Honeybadger.io!
-
Due to the
Mix.env/0
function always being set toprod
for dependencies and Mix being compiled out of applications by exrm, we now require you to explicitly declare yourenvironment_name
for every environment in yourconfig.exs
files.Example: # config/dev.exs config :honeybager, environment_name: :dev
Doing this will ensure you get accurate environment information for exceptions that happen at runtime as well as compile time. You can also set the
environment_name
setting aMIX_ENV
environment variable.Example: $ MIX_ENV=prod mix phoenix.server
Note: setting
environment_name
in your config files takes higher precedence than theMIX_ENV
environment variable.
- Fix a bug where notifications reported by the
error_logger
were not sending the the context