Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/msfjarvis/tracelog
Kotlin compiler plugin to emit method execution metadata in logging
https://github.com/msfjarvis/tracelog
kotlin
Last synced: 2 months ago
JSON representation
Kotlin compiler plugin to emit method execution metadata in logging
- Host: GitHub
- URL: https://github.com/msfjarvis/tracelog
- Owner: msfjarvis
- License: apache-2.0
- Created: 2023-08-17T22:48:43.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-01T05:23:22.000Z (8 months ago)
- Last Synced: 2024-05-01T16:02:25.059Z (8 months ago)
- Topics: kotlin
- Language: Kotlin
- Homepage:
- Size: 225 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TraceLog ![Maven Central](https://img.shields.io/maven-central/v/dev.msfjarvis.tracelog/dev.msfjarvis.tracelog.gradle.plugin?style=flat-square&label=Latest%20version)
Kotlin compiler plugin to automate `println` debugging, because debuggers are for people smarter than me.
## Installation
Apply the Gradle plugin to your Kotlin project
```kotlin
plugins {
id("dev.msfjarvis.tracelog") version "0.1.3"
}
```Optionally configure the annotation class and logger method (defaults shown below)
```kotlin
traceLog {
loggerFunction.set("kotlin.io.println")
annotationClass.set("dev/msfjarvis/tracelog/runtime/annotations/DebugLog")
}
```The `loggerFunction` parameter must be a fully qualified to a static method with a single parameter of the type `Any?`.
```kotlin
fun recordMessage() {} // Bad, no parameter
fun recordMessage(p0: String, p1: Int) {} // Bad, multiple parameters and incorrect types
fun recordMessage(p0: Any?) {} // Good, single parameter with correct type
```> [!NOTE]
> Due to a limitation in how TraceLog resolves the logger function, you might need to add `@JvmStatic` on the method
> for TraceLog to be able to find it. This will be fixed in a future release.## Usage
Currently, this prints out a basic textual representation of the method's inputs and execution time. That is,
given this code:```kotlin
@DebugLog
fun debuggableFunction(p0: String): String {
return "Debugging is cool!"
}fun main() {
debuggableFunction("First parameter")
}
```The compiler plugin will generate code that writes the following messages
```
⇢ debuggableFunction(p0=First parameter)
⇠ debuggableFunction [214.209us] = Debugging is cool!
```## Compatibility
| Kotlin Version | TraceLog Version |
|----------------|------------------|
| 1.9.0 | 0.1.x |