mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-05-23 18:16:15 +02:00
fix: anonymize logs
- better file path regex
This commit is contained in:
parent
284317c67c
commit
a925b3563f
@ -2,6 +2,7 @@ package me.rhunk.snapenhance
|
||||
|
||||
import android.util.Log
|
||||
import com.google.gson.GsonBuilder
|
||||
import me.rhunk.snapenhance.common.data.FileType
|
||||
import me.rhunk.snapenhance.common.logger.AbstractLogger
|
||||
import me.rhunk.snapenhance.common.logger.LogChannel
|
||||
import me.rhunk.snapenhance.common.logger.LogLevel
|
||||
@ -119,6 +120,10 @@ class LogManager(
|
||||
private val logFolder = File(remoteSideContext.androidContext.cacheDir, "logs")
|
||||
private var logFile: File
|
||||
|
||||
private val uuidRegex by lazy { Regex("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", RegexOption.MULTILINE) }
|
||||
private val contentUriRegex by lazy { Regex("content://[a-zA-Z0-9_\\-./]+") }
|
||||
private val filePathRegex by lazy { Regex("([a-zA-Z0-9_\\-./]+)\\.(${FileType.entries.joinToString("|") { file -> file.fileExtension.toString() }})") }
|
||||
|
||||
init {
|
||||
if (!logFolder.exists()) {
|
||||
logFolder.mkdirs()
|
||||
@ -133,6 +138,30 @@ 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
|
||||
)
|
||||
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())
|
||||
}
|
||||
}
|
||||
|
||||
private fun getCurrentDateTime(pathSafe: Boolean = false): String {
|
||||
return DateTimeFormatter.ofPattern(if (pathSafe) "yyyy-MM-dd_HH-mm-ss" else "yyyy-MM-dd HH:mm:ss").format(
|
||||
java.time.LocalDateTime.now()
|
||||
@ -204,32 +233,4 @@ class LogManager(
|
||||
override fun assert(message: Any?, tag: String) {
|
||||
internalLog(tag, LogLevel.ASSERT, message)
|
||||
}
|
||||
|
||||
fun internalLog(tag: String, logLevel: LogLevel, message: Any?) {
|
||||
runCatching {
|
||||
val anonymizedMessage = message.toString().let {
|
||||
if (remoteSideContext.config.isInitialized() && anonymizeLogs)
|
||||
it
|
||||
// remove uuids
|
||||
.replace(Regex("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", RegexOption.MULTILINE), "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
|
||||
// remove content uris
|
||||
.replace(Regex("content://[a-zA-Z0-9_\\-./]+"), "content://xxx")
|
||||
// remove file names
|
||||
.replace(Regex("[a-zA-Z0-9_\\-./]+\\.[a-zA-Z0-9_\\-./]+"), "xxx.xxx")
|
||||
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())
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user