72 lines
2.2 KiB
Kotlin
72 lines
2.2 KiB
Kotlin
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.amnezia.vpn
|
|
|
|
import android.content.Context
|
|
import java.io.File
|
|
import java.time.LocalDateTime
|
|
import android.util.Log as nativeLog
|
|
|
|
/*
|
|
* Drop in replacement for android.util.Log
|
|
* Also stores a copy of all logs in tmp/amnezia_daemon_logs.txt
|
|
*/
|
|
class Log {
|
|
val LOG_MAX_FILE_SIZE = 204800
|
|
private var file: File
|
|
private constructor(context: Context) {
|
|
val tempDIR = context.cacheDir
|
|
file = File(tempDIR, "amnezia_daemon_logs.txt")
|
|
if (file.length() > LOG_MAX_FILE_SIZE) {
|
|
file.writeText("")
|
|
}
|
|
}
|
|
|
|
companion object {
|
|
var instance: Log? = null
|
|
fun init(ctx: Context) {
|
|
if (instance == null) {
|
|
instance = Log(ctx)
|
|
}
|
|
}
|
|
fun i(tag: String, message: String) {
|
|
instance?.write("[info] - ($tag) - $message")
|
|
if (!BuildConfig.DEBUG) { return; }
|
|
nativeLog.i(tag, message)
|
|
}
|
|
fun v(tag: String, message: String) {
|
|
instance?.write("($tag) - $message")
|
|
if (!BuildConfig.DEBUG) { return; }
|
|
nativeLog.v(tag, message)
|
|
}
|
|
fun e(tag: String, message: String) {
|
|
instance?.write("[error] - ($tag) - $message")
|
|
if (!BuildConfig.DEBUG) { return; }
|
|
nativeLog.e(tag, message)
|
|
}
|
|
// Only Prints && Logs when in debug, noop in release.
|
|
fun sensitive(tag: String, message: String?) {
|
|
if (!BuildConfig.DEBUG) { return; }
|
|
if (message == null) { return; }
|
|
e(tag, message)
|
|
}
|
|
|
|
fun getContent(): String? {
|
|
return try {
|
|
instance?.file?.readText()
|
|
} catch (e: Exception) {
|
|
"=== Failed to read Daemon Logs === \n ${e.localizedMessage} "
|
|
}
|
|
}
|
|
|
|
fun clearFile() {
|
|
instance?.file?.writeText("")
|
|
}
|
|
}
|
|
private fun write(message: String) {
|
|
//LocalDateTime.now()
|
|
//file.appendText("[${LocalDateTime.now()}] $message \n")
|
|
}
|
|
}
|