All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.6.5 - 2024-11-18
Tower.Event
includes new field calledby
that states what was the source of the event.
- Declares optional dependency on bandit (with proper version range requiremente) to make sure tower is running with a compatible version of bandit.
0.6.4 - 2024-11-11
- Properly don't report non-5xx (e.g. 400 bad request) status code exceptions when using Bandit.
0.6.3 - 2024-10-24
- Properly report runtime exceptions in Phoenix controller actions when using
Bandit.PhoenixAdapter
inPhoenix.Endpoint
.
0.6.2 - 2024-10-16
- Renamed functions:
Tower.handle_exception/2,3
toTower.report_exception/2,3
Tower.handle_exit/2,3
toTower.report_exit/2,3
Tower.handle_throw/2,3
toTower.report_throw/2,3
Tower.handle_caught/3,4
toTower.report/3,4
Non-breaking change. Original functions still work, but deprecated.
0.6.1 - 2024-10-08
- Properly report (don't ignore) messages that should be reported per their log level that have the
:logger
format of{format, format_args}
, sometimes coming from Erlang/OTP code, when using log functions that pass format and arguments instead of strings (see https://www.erlang.org/doc/apps/kernel/logger.html#log/3).
0.6.0 - 2024-10-04
- New utility to test
:tower
is well configured and working. Either by invoking mix taskmix tower.test
or directly calling functionTower.test/0
. It will generate a test exception and report it to whichever reporters you have configured.
Tower.EphemeralReporter
is now automatically started as a child ofTower.Supervisor
. If you were including it as a child of your application supervisor, you can safely remove it.Tower.EphemeralReporter
now keeps only the 50 most recent events to be light on resource consumption, as initially intened.Tower.attach()
is now automatically called duringTower
start. You no longer need to manually call it as part of your applicationstart
function. Keeping it won't fail but it is a no-operation. You can safely remove it.
0.5.3 - 2024-09-24
Tower.ReportEventError
improved error message prints original exception message also. Helps when building and debugging errors in reporters implementingTower.Reporter
behavior.
0.5.2 - 2024-09-16
Tower.is_normal_exit
function and guard for use when manually catching exits
- Bug/error in one reporter doesn't affect other reporters
0.5.1 - 2024-08-23
- Documentation improvements
0.5.0 - 2024-08-20
- Oban support
- I.e: Automatic handling of errors occurring inside an Oban job perform.
- Bandit support
- I.e: Automatic handling of errors occurring inside plug dispatch call when using
Bandit
adapter.
- I.e: Automatic handling of errors occurring inside plug dispatch call when using
- Properly handle exits ocurring inside a plug dispatch call when using
Plug.Cowboy
adapter.
0.4.0 - 2024-08-16
Tower.Event
plug_conn
field with aPlug.Conn
if available during handling.
- Drop support for elixir 1.13 and 1.14 which were not yet fully integrated with
:logger
handlers, which is the main waytower
handles errors. Keep elixir 1.15+ for now.
0.3.0 - 2024-08-15
Tower.Event
datetime
field with aDateTime
value with microseconds precision.
Tower.Event
time
field.
Tower.Event
time
field replaced withdatetime
field.
0.2.0 - 2024-08-09
- New
Tower.Event
struct to represent and encapsulate any exception, exit, throw or message. - New
time
field ofTower.Event
struct, including the timestamp with microseconds precision. - New
id
field ofTower.Event
struct, including a timed-based sortable unique value (UUIDv7). - Ablility to manually handle/report exceptions, exits and throws
Tower.handle_exception/2,3
Tower.handle_exit/2,3
Tower.handle_throw/2,3
metadata
field supporting user reported metadataTower.handle_caught/3,4
for easier handling ofcatch kind, reason
Tower.equal_or_greater_level?/2
to aid reporters in comparing log level, e.g. supporting per-reporter reporting level.
- Reporters (those implementing
Tower.Reporter
behaviour) can now handle events with just one callback:report_event/1
, in replacement ofreport_exception/2,3
,report_exit/2,3
,report_throw/2,3
andreport_message/2,3
callbacks.