All Downloads are FREE. Search and download functionalities are using the official Maven repository.

haerzig.core.utils.MyLogger.kt Maven / Gradle / Ivy

package haerzig.core.utils

import android.util.Log
import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.LoggerContext
import ch.qos.logback.classic.android.LogcatAppender
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.classic.spi.ILoggingEvent
import ch.qos.logback.core.FileAppender
import org.slf4j.LoggerFactory

class MyLogger {

    companion object {

        private var logPath: String = ""
        private const val isDebugMode = true

        fun init(logPath:String){
            this.logPath = logPath

            // reset the default context (which may already have been initialized)
            // since we want to reconfigure it
            val lc = LoggerFactory.getILoggerFactory() as LoggerContext
            lc.stop()

            // setup LogcatAppender
            val encoder2 = PatternLayoutEncoder()
            encoder2.context = lc
            encoder2.pattern = "[%thread] %msg%n"
            encoder2.start()
            val logcatAppender = LogcatAppender()
            logcatAppender.context = lc
            logcatAppender.encoder = encoder2
            logcatAppender.start()

            // setup FileAppender
            val encoder1 = PatternLayoutEncoder()
            encoder1.context = lc
            encoder1.pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
            encoder1.start()
            val fileAppender = FileAppender()
            fileAppender.context = lc
            fileAppender.file = Companion.logPath
            fileAppender.encoder = encoder1
            fileAppender.start()

            // add the newly created appenders to the root logger;
            // qualify Logger to disambiguate from org.slf4j.Logger
            val root = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME) as Logger
            root.addAppender(logcatAppender)
            root.addAppender(fileAppender)
        }


        fun logErrorMessage(tag: String?, message: String?, t: Throwable?) {
            try {
                LoggerFactory.getLogger(MyLogger::class.java).error(String.format("%s: %s", tag, message), t)
            } catch (ignored: Exception) {
            }
            if (isDebugMode) {
                Log.e(tag, message, t)
            }
        }

        fun logDebugMessage(tag: String?, message: String?) {
            if (isDebugMode) {
                try {
                    LoggerFactory.getLogger(MyLogger::class.java).debug(String.format("%s: %s", tag, message))
                } catch (ignored: Exception) {
                }
                Log.d(tag, message!!)
            }
        }

        fun logInfoMessage(tag: String?, message: String?) {
            try {
                LoggerFactory.getLogger(MyLogger::class.java).info(String.format("%s: %s", tag, message))
            } catch (ignored: Exception) {
            }
            if (isDebugMode) {
                Log.i(tag, message!!)
            }
        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy