/logdog

🐶 Yet another pretty logger for android

Primary LanguageKotlinMIT LicenseMIT

Logdog

jitpack license stars

Yet another pretty logger for android.

Setting up the dependency

last_version: jitpack

implementation 'com.github.7hens:logdog:<last_version>'

Sample usage

Logdog { "hello" }
    .error { Throwable() }
    .debug
    .logMemory(this)
    .logCount("hello")
    .logCount("hello")
    .warn
    .logTime("hello")
    .logTime("hello")
    .requires(!BuildConfig.DEBUG) () { "What a Terrible Failure" }

Advanced

You can customize a logger as you want.

val customLogger = Logdog
    .priority(LogPriority.WARN)
    .strategy(LogStrategy.WARN)
    .tag("CustomLogger")
    .logger { priority, tag, message ->
        Logger.logcat().log(priority, tag,
            PrettyLogger.getStackInfo() + " " + PrettyLogger.stringOf(message))
    }

Output

You can view all logs about Logdog by filtering /=.

E/=:CustomLogger: MainActivity.onCreate(MainActivity.java:53) hello world
D/=:Logdog: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
D/=:Logdog: │ MainActivity.testLog(MainActivity.java:59) on thread: main
D/=:Logdog: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
D/=:Logdog: │ hello
D/=:Logdog: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
E/=:Logdog: ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════
E/=:Logdog: ║ MainActivity.testLog(MainActivity.java:60) on thread: main
E/=:Logdog: ╟┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
E/=:Logdog: ║ java.lang.Throwable
E/=:Logdog: ║ 	at cn.thens.logdog.sample.MainActivity.testLog(MainActivity.java:59)
E/=:Logdog: ║ 	at cn.thens.logdog.sample.MainActivity.onCreate(MainActivity.java:53)
E/=:Logdog: ║ 	at android.app.Activity.performCreate(Activity.java:6278)
E/=:Logdog: ║ 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
E/=:Logdog: ║ 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2396)
E/=:Logdog: ║ 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2503)
E/=:Logdog: ║ 	at android.app.ActivityThread.-wrap11(ActivityThread.java)
E/=:Logdog: ║ 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
E/=:Logdog: ║ 	at android.os.Handler.dispatchMessage(Handler.java:102)
E/=:Logdog: ║ 	at android.os.Looper.loop(Looper.java:148)
E/=:Logdog: ║ 	at android.app.ActivityThread.main(ActivityThread.java:5529)
E/=:Logdog: ║ 	at java.lang.reflect.Method.invoke(Native Method)
E/=:Logdog: ║ 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
E/=:Logdog: ║ 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
E/=:Logdog: ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════
D/=:Logdog: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
D/=:Logdog: │ MainActivity.testLog(MainActivity.java:61) on thread: main
D/=:Logdog: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
D/=:Logdog: │ total memory: 3035 MB
D/=:Logdog: │ avail memory: 2617 MB
D/=:Logdog: │ threshold: 144 MB
D/=:Logdog: │ low memory: false
D/=:Logdog: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
D/=:Logdog: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
D/=:Logdog: │ MainActivity.testLog(MainActivity.java:62) on thread: main
D/=:Logdog: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
D/=:Logdog: │ count(hello): 1
D/=:Logdog: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
D/=:Logdog: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
D/=:Logdog: │ MainActivity.testLog(MainActivity.java:63) on thread: main
D/=:Logdog: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
D/=:Logdog: │ count(hello): 2
D/=:Logdog: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
W/=:Logdog: ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════
W/=:Logdog: ║ MainActivity.testLog(MainActivity.java:64) on thread: main
W/=:Logdog: ╟┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
W/=:Logdog: ║ time(hello): _
W/=:Logdog: ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════
W/=:Logdog: ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════
W/=:Logdog: ║ MainActivity.testLog(MainActivity.java:65) on thread: main
W/=:Logdog: ╟┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
W/=:Logdog: ║ time(hello): 1ms
W/=:Logdog: ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════
A/=:Logdog: ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════
A/=:Logdog: ║ MainActivity.testLog(MainActivity.java:66) on thread: main
A/=:Logdog: ╟┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
A/=:Logdog: ║ What a Terrible Failure
A/=:Logdog: ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════