diff options
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.kt | 45 |
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 @@ | |||
1 | package org.pacien.tincapp.context | ||
2 | |||
3 | import ch.qos.logback.classic.Logger | ||
4 | import ch.qos.logback.classic.LoggerContext | ||
5 | import ch.qos.logback.classic.android.LogcatAppender | ||
6 | import ch.qos.logback.classic.encoder.PatternLayoutEncoder | ||
7 | import ch.qos.logback.classic.spi.ILoggingEvent | ||
8 | import ch.qos.logback.core.Context | ||
9 | import ch.qos.logback.core.FileAppender | ||
10 | import org.slf4j.LoggerFactory | ||
11 | |||
12 | /** | ||
13 | * @author pacien | ||
14 | */ | ||
15 | object 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 | } | ||