Skip to content
CAI
Software that uses CAICheck a score

kivra/jsonformat

54.1

Weak · 17 September 2026

354

lines of production code

Erlang

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is an Erlang/OTP application that provides a custom JSON log formatter for the standard OTP logger. It enables structured, single-line JSON output with configurable key mapping, custom format callbacks, and precise timestamp formatting. The project includes build automation via Makefile and comprehensive documentation for configuration and contribution.

Features

Initial release of JSON log formatter for Erlang OTP Logger

This change introduces the jsonformat application, a custom formatter for the Erlang OTP logger that outputs single-line JSON logs. It provides configurable key mapping, custom format functions (callbacks), and control over line endings (Unix, Windows, Mac). The formatter handles various data types including atoms, binaries, PIDs, ports, and MFA tuples, converting them to JSON-safe representations. It also supports formatting timestamps in ISO 8601 format with microsecond or nanosecond precision.

src · high confidence

Behavioural changes

Add structured JSON logging configuration

The application now uses a new \sys.config\ file to configure the Erlang/OTP logger. This change switches the default log handler to output structured JSON format (via \jsonformat\) instead of the default plain text, and sets the global log level to \info\.

config · high confidence

Housekeeping

Initial project scaffolding and documentation

The repository has been initialized with core project files, including a Makefile for build and test automation, a rebar.config defining Erlang/OTP 27+ requirements and erlfmt formatting, and a .gitignore. Comprehensive documentation has been added via README.md (covering configuration options like line endings and metadata filtering), CONTRIBUTING.md (establishing a Code of Conduct), and SECURITY.md (outlining vulnerability reporting procedures).

(repo-wide) · 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 54.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 48
  • Readiness 46
  • Security 71

Changes since last survey

  • 42 commits — 34 feature/other, 8 fixes

By area

  • (root) — 20 commits
  • .github/workflows — 10 commits
  • src/jsonformat.erl — 9 commits
  • (repo) — 3 commits

Notable commits

  • fix: Fix CI
  • fix: fix: Format lists and binaries with non-UTF8 values (#28)
  • fix: fix: Prettify some output such as MFA, port, pid
  • fix: fix: Use io_lib:format/2 instead of term_to_binary
  • fix: fix: Wrong nanosecond format (#14)
  • fix: fix: deal with lists of maps for nested json (#12)
  • fix: fix: remove jiffy
  • fix: no-release: fix: Add renovate.json (#17)
  • change: Add automatic formatting
  • change: Cache PLT
  • change: Initial commit
  • change: Initial commit
  • change: Loosen jsx version requirement
  • change: Merge pull request #16 from kivra/msn-some-improvements
  • change: Merge pull request #24 from kivra/modernize-ci-pipe
  • change: Merge pull request #25 from kivra/checkout-code-before-release
  • change: Minimal gitignore
  • change: Remove inline editor config
  • change: Remove rebar2 referenser from gitignore
  • change: chore(deps): update mathieudutour/github-tag-action action to v6 (#23)
  • …and 22 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

kivra/jsonformat 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 ae98893a53d2b226732b495cc1ff7f5ca1ea8e41 — the exact code this score is about.
  • Scored under rubric-2026.09.12 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-f94092f054c1.