dnsimple/bugsnag-erlang
49.8
Weak · 17 September 2026
906
lines of production code
Erlang
primary language
1
measurement over time
What this system is
This system is a Bugsnag client library for Erlang applications, designed to report errors and exceptions to the Bugsnag service. It integrates with the Erlang logger to automatically capture and forward structured log events and exceptions, while supporting configuration for API keys, release stages, and application versions. The project also includes a modernized build system using rebar3 and native OTP logging, along with a comprehensive test suite to verify its functionality.
Features
Added BugSnag logger handler for structured logging
A new OTP logger-compliant handler module (\bugsnag\_logger\_handler\) has been introduced to automatically forward structured log events to BugSnag. This handler processes incoming log messages, ensuring they are structured with necessary metadata (such as MFA and level) and extracting exception details where available, before notifying BugSnag. It includes safeguards to prevent infinite logging loops from the BugSnag worker and handles unstructured logs by treating the message as the primary event field.
src/handlers · high confidence
Initial release of the Bugsnag Erlang client
This change introduces the \bugsnag\_erlang\ application, providing a notifier for Erlang applications to report errors and exceptions to Bugsnag. The client supports configuration via application environment variables or programmatic setup, allowing users to define API keys, release stages, handler names, and pool sizes. It features a logger handler integration to automatically capture and report errors, supports granular configuration of multiple handlers, and includes an API for manually notifying Bugsnag of events. The implementation handles exception formatting, breadcrumb tracking, and sends payloads using the Bugsnag Error Reporting API v5.
src · high confidence
Introduce optional app version reporting in Bugsnag worker
The Bugsnag worker now supports an optional \app\_version\ configuration option. When provided, this version is included in the base event payload sent to Bugsnag, allowing users to track which application version generated specific errors. If not specified, the version field is omitted from the event data.
src/workers · high confidence
Behavioural changes
Major build system overhaul and dependency migration
The project has been upgraded to require OTP 27 and migrated from the lager logging library to the native Erlang/OTP Logger, removing the jsx dependency in favor of the standard json module. The build process now uses rebar3 exclusively, replacing the previous reltool-based release structure with a modern plugin ecosystem (including erlfmt, dialyzer, and hex publishing). This change introduces stricter code quality checks, new linting rules, and a simplified development workflow via a new Makefile.
(repo-wide) · high confidence
Test coverage
Added comprehensive test suite for Bugsnag Erlang integration
Added a new Common Test suite (bugsnag\_SUITE.erl) and an HTTP helper module (http\_helper.erl) to verify the Bugsnag Erlang application. The tests cover application startup configurations (enabled/disabled, API keys, release stages, pool sizes, custom log levels, and app version reporting), logger handler lifecycle, and the generation of telemetry and Datadog exception events from structured logs.
test · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 50.
Lenses
- Code Health 100
- Architecture 69
- Maturity 35
- Readiness 76
- Security 50
Changes since last survey
- 120 commits — 112 feature/other, 8 fixes
By area
- (root) — 56 commits
- .github/workflows — 23 commits
- src/bugsnag.erl — 16 commits
- (repo) — 6 commits
- .github/dependabot.yml — 5 commits
- src/workers — 5 commits
- src/bugsnag.app.src — 2 commits
- src/bugsnag_app.erl — 2 commits
- src/bugsnag_erlang.app.src — 2 commits
- src/bugsnag_error_logger.erl — 2 commits
- test/bugsnag_SUITE.erl — 1 commit
Notable commits
- fix: Fix datadog error type information
- fix: Fix event type extras
- fix: Fix exceptions when the reason is not a printable string (#50)
- fix: Fix flaky test (#46)
- fix: Fix getting the right version (#47)
- fix: Fix hex releases (#38)
- fix: Fix markdown.
- fix: ci: Fix YAML warning
- change: Add OTP28 to CI (#52)
- change: Add app-startup verification and preparation of configuration (#32)
- change: Add basic CI workflow (#13)
- change: Add changelog for the last release candidate (#39)
- change: Add erlfmt (#10)
- change: Add simple makefile
- change: Adding a lager handler to report lager messages above a certain level to Busgnag
- change: Adds "auto merge" to GithubAction updates PRs (#17)
- change: Adds release process to hex.pm (#18)
- change: Allow to granularly configure the logger handler that is given (#35)
- change: An exit with reason normal should not send error.
- change: Basic structure.
- …and 100 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
dnsimple/bugsnag-erlang was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 17 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit da32e417eadb720e045a21b40ccbb342efd850fa — the exact code this score is about.
- Scored under rubric-2026.09.13 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d1ef6c0bd534.