fix(app): synchronized logs
This commit is contained in:
@@ -2,8 +2,6 @@ package me.rhunk.snapenhance
|
|||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.google.gson.GsonBuilder
|
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.data.FileType
|
||||||
import me.rhunk.snapenhance.common.logger.AbstractLogger
|
import me.rhunk.snapenhance.common.logger.AbstractLogger
|
||||||
import me.rhunk.snapenhance.common.logger.LogChannel
|
import me.rhunk.snapenhance.common.logger.LogChannel
|
||||||
@@ -120,6 +118,7 @@ class LogManager(
|
|||||||
private val LOG_LIFETIME = 24.hours
|
private val LOG_LIFETIME = 24.hours
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val printLogLock = Any()
|
||||||
private val anonymizeLogs by lazy { !remoteSideContext.config.root.scripting.disableLogAnonymization.get() }
|
private val anonymizeLogs by lazy { !remoteSideContext.config.root.scripting.disableLogAnonymization.get() }
|
||||||
|
|
||||||
var lineAddListener = { _: LogLine -> }
|
var lineAddListener = { _: LogLine -> }
|
||||||
@@ -146,28 +145,28 @@ class LogManager(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun internalLog(tag: String, logLevel: LogLevel, message: Any?) {
|
fun internalLog(tag: String, logLevel: LogLevel, message: Any?) {
|
||||||
runCatching {
|
synchronized(printLogLock) {
|
||||||
val anonymizedMessage = message.toString().let {
|
runCatching {
|
||||||
if (remoteSideContext.config.isInitialized() && anonymizeLogs)
|
val anonymizedMessage = message.toString().let {
|
||||||
it.replace(uuidRegex, "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
|
if (remoteSideContext.config.isInitialized() && anonymizeLogs)
|
||||||
.replace(contentUriRegex, "content://xxx")
|
it.replace(uuidRegex, "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
|
||||||
.replace(filePathRegex, "xxxxxxxx.$2")
|
.replace(contentUriRegex, "content://xxx")
|
||||||
else it
|
.replace(filePathRegex, "xxxxxxxx.$2")
|
||||||
}
|
else it
|
||||||
val line = LogLine(
|
}
|
||||||
logLevel = logLevel,
|
val line = LogLine(
|
||||||
dateTime = getCurrentDateTime(),
|
logLevel = logLevel,
|
||||||
tag = tag,
|
dateTime = getCurrentDateTime(),
|
||||||
message = anonymizedMessage
|
tag = tag,
|
||||||
)
|
message = anonymizedMessage
|
||||||
remoteSideContext.coroutineScope.launch(Dispatchers.IO) {
|
)
|
||||||
logFile?.appendText("|$line\n", Charsets.UTF_8)
|
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())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user