mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-05-24 02:22:11 +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 android.util.Log
|
||||||
import com.google.gson.GsonBuilder
|
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.AbstractLogger
|
||||||
import me.rhunk.snapenhance.common.logger.LogChannel
|
import me.rhunk.snapenhance.common.logger.LogChannel
|
||||||
import me.rhunk.snapenhance.common.logger.LogLevel
|
import me.rhunk.snapenhance.common.logger.LogLevel
|
||||||
@ -119,6 +120,10 @@ class LogManager(
|
|||||||
private val logFolder = File(remoteSideContext.androidContext.cacheDir, "logs")
|
private val logFolder = File(remoteSideContext.androidContext.cacheDir, "logs")
|
||||||
private var logFile: File
|
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 {
|
init {
|
||||||
if (!logFolder.exists()) {
|
if (!logFolder.exists()) {
|
||||||
logFolder.mkdirs()
|
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 {
|
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(
|
return DateTimeFormatter.ofPattern(if (pathSafe) "yyyy-MM-dd_HH-mm-ss" else "yyyy-MM-dd HH:mm:ss").format(
|
||||||
java.time.LocalDateTime.now()
|
java.time.LocalDateTime.now()
|
||||||
@ -204,32 +233,4 @@ class LogManager(
|
|||||||
override fun assert(message: Any?, tag: String) {
|
override fun assert(message: Any?, tag: String) {
|
||||||
internalLog(tag, LogLevel.ASSERT, message)
|
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