Skip to content

Instantly share code, notes, and snippets.

@lucapette
Last active April 10, 2022 11:23
Show Gist options
  • Save lucapette/3dd7eca10c47de69864bac844b8d0d04 to your computer and use it in GitHub Desktop.
Save lucapette/3dd7eca10c47de69864bac844b8d0d04 to your computer and use it in GitHub Desktop.

Revisions

  1. lucapette renamed this gist Apr 10, 2022. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. lucapette created this gist Apr 10, 2022.
    39 changes: 39 additions & 0 deletions klogger.ext
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    package me.lucapette.ext.klogger

    import mu.KLogger
    import java.util.WeakHashMap

    data class TimeDelta(val sinceStart: Long, val sinceLast: Long)

    data class TimeLog(val start: Long, var current: Long) {
    fun since(): TimeDelta {
    val now = System.currentTimeMillis()

    return TimeDelta(now - start, now - current)
    }

    fun update() {
    current = System.currentTimeMillis()
    }
    }

    val store = WeakHashMap<String, TimeLog>()

    fun KLogger.time(label: String) {
    val now = System.currentTimeMillis()
    store[label] = TimeLog(now, now)
    }

    fun KLogger.timeLog(label: String, message: String) {
    val timeLog = store[label] ?: return
    val delta = timeLog.since()
    info { "[$label ${delta.sinceStart} ${delta.sinceLast}] $message" }
    timeLog.update()
    }

    fun KLogger.timeEnd(label: String) {
    val timeLog = store[label] ?: return
    val delta = timeLog.since()
    info { "[$label ${delta.sinceStart} ${delta.sinceLast}]" }
    store.remove(label)
    }