Skip to content
CAI
Software that uses CAICheck a score

orhanobut/logger

55.5

Adequate · 25 September 2026

1.1k

lines of production code

Java

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Android logging library that provides a modular architecture for managing log output. It supports multiple concurrent log destinations, including console (Logcat) and disk-based CSV storage, through a pluggable adapter and strategy pattern. The library allows for flexible formatting and configuration, enabling developers to route logs to various outputs simultaneously.

Features

Added Android sample app demonstrating logging capabilities

A new sample application has been added to the 'sample' directory, providing a concrete example of how to use the logging library. The sample includes a MainActivity that configures and demonstrates various logging features, including Android and disk log adapters, custom format strategies, and different log levels. The app's AndroidManifest.xml has been moved from the 'app' directory to 'sample' and updated with the correct package name and activity configuration.

sample · high confidence

Introduces structured logging adapters for console and disk output

The logger now supports multiple output destinations via a new adapter architecture. Console logs are handled by the new AndroidLogAdapter, which formats output with pretty-printed borders and thread/method details. Additionally, a new DiskLogAdapter is introduced to persist logs to the disk in CSV format, utilizing a background thread for writing. This change refactors the internal structure to separate formatting (PrettyFormatStrategy) from the actual output destinations, allowing for more flexible logging configurations.

. · high confidence

Refactors logger into a modular adapter and strategy architecture

The logging library has been restructured to support pluggable log destinations and formatting. A new \LogAdapter\ interface allows different output targets (such as \AndroidLogAdapter\ for Logcat and \DiskLogAdapter\ for file storage) to be added or removed at runtime. Additionally, a \FormatStrategy\ interface enables custom log formatting, with \PrettyFormatStrategy\ providing the default pretty-printed output. The \Logger\ class now delegates to a \Printer\ which manages a list of \LogAdapter\s, allowing users to configure multiple log sinks simultaneously.

logger · high confidence

Removals

Removal of the Android sample application

The Android sample application (LoggerSample) has been removed from the repository. This includes the main activity, layout files, resource strings, and test classes, indicating that the standalone demo app is no longer maintained or distributed as part of this project.

app/src · high confidence

Behavioural changes

Updated build configuration and documentation for version 2.2.0

The project's CI configuration (.travis.yml) was updated to use Oracle JDK 8 and Android build tools 27.0.3. The README.md was significantly updated to reflect version 2.2.0, introducing new features such as support for all collections, JSON and XML logging, and advanced formatting options via FormatStrategy. The documentation also includes examples for Timber integration and file logging. Additionally, the gradle wrapper scripts (gradlew, gradlew.bat) were updated to improve cross-platform compatibility and argument handling.

(repo-wide) · high confidence

Dependencies

Migrate project to AndroidX and update build tools

The project has been migrated to AndroidX, enabling the use of the latest Android support libraries and modern build tools. The sample module has been updated to target API level 27 and use AndroidX test runners, while the main library module now targets API level 28. Build dependencies have been upgraded, including the Android Gradle plugin to version 3.2.0 and Kotlin to 1.2.51. Additionally, the maven publishing script has been reorganized into the gradle/ directory, and the sample app module was renamed from 'app' to 'sample' to better reflect its purpose.

(dependencies) · medium confidence

Updated Gradle wrapper to version 4.6

The Gradle wrapper has been upgraded from version 2.2.1 to 4.6, which will cause the project to use the newer Gradle version for builds.

gradle · 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

Score

  • CAI 57 → 55 (-1.6)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 99 → 98 (-1.2)
  • Architecture 69 → 100 (+30.9)
  • Maturity 55 → 55 (+0.0)
  • Readiness 44 → 31 (-12.3)
  • Security 100 → 100 (+0.0)

Resolved (5)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • No exposed public API
  • Test reliability not included
  • dormant codebase — no living knowledge left to concentrate

New (7)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Duplicated block (6 lines × 2) (logger/src/main/java/com/orhanobut/logger/CsvFormatStrategy.java)
  • No dependency advisory monitoring
  • TodoComment (logger/src/main/java/com/orhanobut/logger/DiskLogStrategy.java)
  • TodoComment (logger/src/test/java/com.orhanobut.logger/PrettyFormatStrategyTest.kt)
  • TodoComment (logger/src/test/java/com.orhanobut.logger/PrettyFormatStrategyTest.kt)
  • TodoComment (logger/src/test/java/com.orhanobut.logger/PrettyFormatStrategyTest.kt)

Architecture

  • Containers 0 added · 0 removed · contexts 1 added · 1 removed · edges 0 added · 0 removed

Added bounded contexts (1)

  • logger

Removed bounded contexts (1)

  • .

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

orhanobut/logger 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 25 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 c64a72c2ce3d0fcdebe829b091e3a530c94ca6bd — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-f917f263222d.