Popularity
0.6
Declining
Activity
6.5
Declining
3
1
0

Programming language: Kotlin
Tags: Misc    
Latest version: v0.1.6

log4k alternatives and similar libraries

Based on the "Misc" category

Do you think we are missing an alternative of log4k or a related project?

Add another 'Misc' Library

README

Log4K

License Download Build Status badge-android badge-native badge-js badge-jvm Kotlin Version

Lightweight logging library for Kotlin/Multiplatform. Supports Android, iOS, JavaScript and plain JVM environments.

Download

implementation("saschpe.log4k:log4k:0.1.6")

Usage

Logging messages is straightforward, the Log object provides the usual functions you'd expect:

Log.verbose("FYI")
Log.debug("Debugging ${foo.bar}")
Log.info("Nice to know")
Log.warn("Warning about $stuff ...")
Log.error("Oops!")
Log.assert("Something went wrong!", throwable)

The log output includes the function name and line and pretty-prints exceptions on all supported platforms:

I/Application.onCreate: Log4K rocks!

Configuration (Android example)

To only output messages with log-level info and above, you can configure the console logger in your Application class:

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        Log.loggers.add(ConsoleLogger().apply {
            if (!BuildConfig.DEBUG) {
                minimumLogLevel = Log.Level.Info
            }
        })
    }
}

Custom logger (Android Crashlytics example)

The library provides a cross-platform ConsoleLogger by default. Custom loggers can easily be added. For instance, to send only ERROR and ASSERT messages to Crashlytics in production builds, you could do the following:

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        Log.loggers += when {
            BuildConfig.DEBUG -> ConsoleLogger()
            else -> CrashlyticsLogger()
        }
    }

    private class CrashlyticsLogger : Logger() {
        override fun print(level: Log.Level, tag: String, message: String?, throwable: Throwable?) {
            val priority = when (level) {
                Log.Level.Verbose -> VERBOSE
                Log.Level.Debug -> DEBUG
                Log.Level.Info -> INFO
                Log.Level.Warning -> WARN
                Log.Level.Error -> ERROR
                Log.Level.Assert -> ASSERT
            }
            if (priority >= ERROR) {
                Crashlytics.log(priority, tag, message)
                Crashlytics.logException(throwable)
            }
        }
    }
}

Snapshots of the development version are available in Sonatype's snapshots repository.

Users

License

Copyright 2019 Sascha Peilicke

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.


*Note that all licence references and agreements mentioned in the log4k README section above are relevant to that project's source code only.