aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/context/AppLogger.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/context/AppLogger.kt')
-rw-r--r--app/src/main/java/org/pacien/tincapp/context/AppLogger.kt45
1 files changed, 45 insertions, 0 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/context/AppLogger.kt b/app/src/main/java/org/pacien/tincapp/context/AppLogger.kt
new file mode 100644
index 0000000..e240e70
--- /dev/null
+++ b/app/src/main/java/org/pacien/tincapp/context/AppLogger.kt
@@ -0,0 +1,45 @@
1package org.pacien.tincapp.context
2
3import ch.qos.logback.classic.Logger
4import ch.qos.logback.classic.LoggerContext
5import ch.qos.logback.classic.android.LogcatAppender
6import ch.qos.logback.classic.encoder.PatternLayoutEncoder
7import ch.qos.logback.classic.spi.ILoggingEvent
8import ch.qos.logback.core.Context
9import ch.qos.logback.core.FileAppender
10import org.slf4j.LoggerFactory
11
12/**
13 * @author pacien
14 */
15object AppLogger {
16 private const val LOGCAT_PATTERN = "[%thread] %msg%n%rEx"
17 private const val LOGFILE_PATTERN = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n%rEx"
18
19 fun configure() {
20 (LoggerFactory.getILoggerFactory() as LoggerContext)
21 .apply { reset() }
22 .let { loggerContext ->
23 (LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME) as Logger)
24 .apply {
25 addAppender(LogcatAppender()
26 .apply { context = loggerContext }
27 .apply { encoder = patternEncoder(loggerContext, LOGCAT_PATTERN) }
28 .apply { start() })
29 }
30 .apply {
31 addAppender(FileAppender<ILoggingEvent>()
32 .apply { context = loggerContext }
33 .apply { encoder = patternEncoder(loggerContext, LOGFILE_PATTERN) }
34 .apply { file = AppPaths.appLogFile().absolutePath }
35 .apply { start() })
36 }
37 }
38 }
39
40 private fun patternEncoder(ctx: Context, pat: String) =
41 PatternLayoutEncoder()
42 .apply { context = ctx }
43 .apply { pattern = pat }
44 .apply { start() }
45}