commit ae1aee3ce0f662db447021d51901630000d5e884
parent 0aa429c29b1462552106740497128c34dc7f543e
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Mon, 12 Aug 2024 01:14:21 +0200

fix(app): synchronized logs

Diffstat:
Mapp/src/main/kotlin/me/rhunk/snapenhance/LogManager.kt | 43+++++++++++++++++++++----------------------
1 file changed, 21 insertions(+), 22 deletions(-)

diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/LogManager.kt b/app/src/main/kotlin/me/rhunk/snapenhance/LogManager.kt @@ -2,8 +2,6 @@ package me.rhunk.snapenhance import android.util.Log import com.google.gson.GsonBuilder -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import me.rhunk.snapenhance.common.data.FileType import me.rhunk.snapenhance.common.logger.AbstractLogger import me.rhunk.snapenhance.common.logger.LogChannel @@ -120,6 +118,7 @@ class LogManager( private val LOG_LIFETIME = 24.hours } + private val printLogLock = Any() private val anonymizeLogs by lazy { !remoteSideContext.config.root.scripting.disableLogAnonymization.get() } var lineAddListener = { _: LogLine -> } @@ -146,28 +145,28 @@ class LogManager( } fun internalLog(tag: String, logLevel: LogLevel, message: Any?) { - runCatching { - val anonymizedMessage = message.toString().let { - if (remoteSideContext.config.isInitialized() && anonymizeLogs) - it.replace(uuidRegex, "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") - .replace(contentUriRegex, "content://xxx") - .replace(filePathRegex, "xxxxxxxx.$2") - else it - } - val line = LogLine( - logLevel = logLevel, - dateTime = getCurrentDateTime(), - tag = tag, - message = anonymizedMessage - ) - remoteSideContext.coroutineScope.launch(Dispatchers.IO) { + synchronized(printLogLock) { + runCatching { + val anonymizedMessage = message.toString().let { + if (remoteSideContext.config.isInitialized() && anonymizeLogs) + it.replace(uuidRegex, "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") + .replace(contentUriRegex, "content://xxx") + .replace(filePathRegex, "xxxxxxxx.$2") + else it + } + val line = LogLine( + logLevel = logLevel, + dateTime = getCurrentDateTime(), + tag = tag, + message = anonymizedMessage + ) logFile?.appendText("|$line\n", Charsets.UTF_8) + lineAddListener(line) + Log.println(logLevel.priority, tag, anonymizedMessage) + }.onFailure { + Log.println(Log.ERROR, tag, "Failed to log message: $message") + Log.println(Log.ERROR, tag, it.stackTraceToString()) } - lineAddListener(line) - Log.println(logLevel.priority, tag, anonymizedMessage) - }.onFailure { - Log.println(Log.ERROR, tag, "Failed to log message: $message") - Log.println(Log.ERROR, tag, it.stackTraceToString()) } }