Skip to content

feat: add Logwood production-grade logging library (core:logging)#10

Open
alexfin90 wants to merge 1 commit into
developfrom
claude/issue-9-20260330-1202
Open

feat: add Logwood production-grade logging library (core:logging)#10
alexfin90 wants to merge 1 commit into
developfrom
claude/issue-9-20260330-1202

Conversation

@alexfin90

Copy link
Copy Markdown
Owner

Implements the full Logwood logging pipeline as a standalone core:logging Android library module with zero Hilt/Firebase dependencies.

Key components:

  • LogEntry, LogPolicy, MutableLogPolicy (AtomicReference, thread-safe)
  • LogSink / CrashReporterSink interfaces
  • NonFatalReport + exception/NonFatalException
  • DefaultRedaction (email, phone, IP, token, GPS regex scrubbing)
  • LogPipeline (redact → global policy → per-sink policy → dispatch)
  • LogcatSink, InMemoryRingBufferSink (ReentrantReadWriteLock, ring semantics)
  • RingBufferExporter (plain text + JSON lines)
  • LogwoodTimberTree (Timber.Tree bridge)
  • Logwood DSL entry point with LogwoodBuilder / LogPolicyBuilder / SinkBuilder
  • 8 unit test files covering policy, pipeline, redaction, ring buffer, exporter, Timber tree, and install DSL

App integration:

  • Replaces CvShowcaseDebugTree / CvShowcaseReleaseTree with Logwood.install {}
  • Debug: Logcat + RingBuffer, VERBOSE+, DefaultRedaction
  • Release: Logcat + RingBuffer + CrashlyticsSink, WARN+, DefaultRedaction
  • CrashlyticsSink handles both domain and logging NonFatalException types
  • CvShowcaseApplication.plantTimberTree() now boots the full pipeline

Closes #9

Implements the full Logwood logging pipeline as a standalone `core:logging`
Android library module with zero Hilt/Firebase dependencies.

Key components:
- LogEntry, LogPolicy, MutableLogPolicy (AtomicReference, thread-safe)
- LogSink / CrashReporterSink interfaces
- NonFatalReport + exception/NonFatalException
- DefaultRedaction (email, phone, IP, token, GPS regex scrubbing)
- LogPipeline (redact → global policy → per-sink policy → dispatch)
- LogcatSink, InMemoryRingBufferSink (ReentrantReadWriteLock, ring semantics)
- RingBufferExporter (plain text + JSON lines)
- LogwoodTimberTree (Timber.Tree bridge)
- Logwood DSL entry point with LogwoodBuilder / LogPolicyBuilder / SinkBuilder
- 8 unit test files covering policy, pipeline, redaction, ring buffer,
  exporter, Timber tree, and install DSL

App integration:
- Replaces CvShowcaseDebugTree / CvShowcaseReleaseTree with Logwood.install {}
- Debug: Logcat + RingBuffer, VERBOSE+, DefaultRedaction
- Release: Logcat + RingBuffer + CrashlyticsSink, WARN+, DefaultRedaction
- CrashlyticsSink handles both domain and logging NonFatalException types
- CvShowcaseApplication.plantTimberTree() now boots the full pipeline

Closes #9

Co-authored-by: Alessandro Finocchiaro <alexfin90@users.noreply.github.com>
@alexfin90 alexfin90 self-assigned this Mar 30, 2026
@alexfin90 alexfin90 added the enhancement New feature or request label Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Logwood — production-grade logging library for Android

1 participant