Arch Lumber is a Kotlin Multiplatform logging library with a small public API and platform-specific
DebugOak defaults.

- Kotlin
2.4.0
- Gradle wrapper
9.5.1
- JDK
21 via the Gradle toolchain and Foojay resolver
- Android
minSdk 20 and compileSdk 36
- Use the project wrapper instead of a local Gradle install
-
Lumber is the logging entry point
-
Lumber.Oak is the extension point for custom sinks
-
DebugOak gives you platform defaults out of the box
- tagged facades keep context across calls, while quiet and length options stay one-shot
Documentation Maintenance
- Keep KDoc aligned with the shipped contract of public APIs.
- Update MkDocs pages and the generated Dokka HTML when setup, usage, API, compatibility, or
platform behavior changes.
- Keep dependency versions, Android compatibility notes, and toolchain references aligned with
project configuration.
- Generate release changelogs from the diff between the previous tag and the release tag.
- Keep contributor-facing guidance in
CONTRIBUTING.md.
Lumber.plant(DebugOak())
Lumber.info("App started")
dependencies {
implementation("io.github.matheus-corregiari:arch-lumber:<latest>")
}
Lumber.debug("User %s signed in", userName)
Lumber.warn("Cache miss for %s", cacheKey)
Lumber.error(exception, "Operation failed")
val authLog = Lumber.tag("Auth")
authLog.info("Session created")
authLog.info("Session refreshed")
class AnalyticsOak : Lumber.Oak() {
override fun isLoggable(tag: String?, level: Lumber.Level) = level >= Lumber.Level.Info
override fun log(level: Lumber.Level, tag: String?, message: String, error: Throwable?) {
Analytics.track(level.name, tag, message, error)
}
}
Lumber.plant(AnalyticsOak())
| Target |
Default DebugOak output |
| Android |
android.util.Log |
| JVM |
ANSI colored stdout |
| Apple |
ANSI colored stdout |
| JS / WasmJS |
native console
|
| Area |
Current value |
| Kotlin |
2.4.0 |
| Gradle wrapper |
9.5.1 |
| JDK toolchain |
21 |
| Android |
minSdk 20, compileSdk 36
|
| Published targets |
Android, JVM, Apple, JS, WasmJS |
- add a first-class structured logging adapter
- add a file-backed oak example for long-running apps
- add richer Android log filtering examples
- add release-note automation so changelog pages are generated from commits
- add platform-specific docs snippets for Android, JVM, Apple, JS, and WasmJS
Copyright 2025 Matheus Corregiari
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.