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