Lumberjack
10.0.0indexedFacilitates efficient logging with customizable filters, loggers, and formatters. Supports advanced features like tagging, serialization, and easy integration into existing projects.
Facilitates efficient logging with customizable filters, loggers, and formatters. Supports advanced features like tagging, serialization, and easy integration into existing projects.
This library provides following main features:
L class for the shortest possible log codes![]() | ![]() |
![]() | ![]() |
| Dependency | Version |
|---|---|
| Kotlin | 2.4.0 |
| Jetbrains Compose | 1.11.1 |
:warning: Following experimental annotations are used:
- OptIn
androidx.compose.material3.ExperimentalMaterial3Api(3x)kotlinx.cinterop.ExperimentalForeignApi(1x)I try to use as less experimental features as possible, but in this case the ones above are needed!
Simply add the dependencies inside your build.gradle.kts file.
// 1) register a console logger
L.plant(ConsoleLogger())
// 2) register a file logger
val setup = FileLoggerSetup.Daily(folder = FileLoggerSetup.getDefaultLogFolder())
// or one of the following setups
//val setup = FileLoggerSetup.FileSize(folder = FileLoggerSetup.getDefaultLogFolder())
//val setup = FileLoggerSetup.SingleFile(folder = FileLoggerSetup.getDefaultLogFolder())
L.plant(FileLogger(setup))
L.d { "Some log" }
L.e(Exception("TEST")) { "Some log with exception" }
L.logIf { false }?.d {
// this block will never be executed thanks to lazy evaluation
"this log will never be printed nor will this block ever be executed"
}
L.tag().v { }
L.tag().d { }
L.tag().i { }
L.tag().w { }
L.tag().e { }
L.tag().wtf { }
A full demo is included inside the demo module, it shows nearly every usage with working examples.
Check out the API documentation.
You can find more of my multiplatform libraries that work well together here.
When combining my libraries, you can find compatibility information here.
| Module | android | iOS | windows | macOS | wasm | Notes |
|---|
| core | ✅ | ✅ | ✅ | ✅ | ✅ | the core module of lumberjack |
| logger-console | ✅ | ✅ | ✅ | ✅ | ✅ | a console logger for lumberjack |
| logger-file | ✅ | ✅ | ✅ | ✅ | ❌ | a file logger for lumberjack |
| extension-composeviewer | ✅ | ✅ | ✅ | ✅ | ✅ | a compose viewer for lumberjack |
| extension-feedback | ✅ | ✅ | ❌ | ❌ | ❌ | a feedback module for lumberjack |
| Jetbrains Compose Material3 | 1.9.0 |
Define the dependencies inside your libs.versions.toml file.
[versions]
lumberjack = "<LATEST-VERSION>"
[libraries]
lumberjack-core = { module = "io.github.mflisar.lumberjack:core", version.ref = "lumberjack" }
lumberjack-logger-console = { module = "io.github.mflisar.lumberjack:logger-console", version.ref = "lumberjack" }
lumberjack-logger-file = { module = "io.github.mflisar.lumberjack:logger-file", version.ref = "lumberjack" }
lumberjack-extension-composeviewer = { module = "io.github.mflisar.lumberjack:extension-composeviewer", version.ref = "lumberjack" }
lumberjack-extension-feedback = { module = "io.github.mflisar.lumberjack:extension-feedback", version.ref = "lumberjack" }
And then use the definitions in your projects build.gradle.kts file like following:
implementation(libs.lumberjack.core)
implementation(libs.lumberjack.logger.console)
implementation(libs.lumberjack.logger.file)
implementation(libs.lumberjack.extension.composeviewer)
implementation(libs.lumberjack.extension.feedback)
val lumberjack = "<LATEST-VERSION>"
implementation("io.github.mflisar.lumberjack:core:${lumberjack}")
implementation("io.github.mflisar.lumberjack:logger-console:${lumberjack}")
implementation("io.github.mflisar.lumberjack:logger-file:${lumberjack}")
implementation("io.github.mflisar.lumberjack:extension-composeviewer:${lumberjack}")
implementation("io.github.mflisar.lumberjack:extension-feedback:${lumberjack}")
Surfaced from shared tags and platforms — no rankings paid for.