Files
uniapp-im-shop/uni_modules/tuikit-atomic-x/utssdk/app-android/kotlin/Logger.kt
2026-01-12 17:52:15 +08:00

80 lines
2.8 KiB
Kotlin

package uts.sdk.modules.atomicx.kotlin
import android.util.Log
import com.tencent.liteav.base.ContextUtils
import com.tencent.trtc.TRTCCloud
import org.json.JSONException
import org.json.JSONObject
class Logger {
companion object {
private const val API = "TuikitLog"
private const val LOG_KEY_API = "api"
private const val LOG_KEY_PARAMS = "params"
private const val LOG_KEY_PARAMS_LEVEL = "level"
private const val LOG_KEY_PARAMS_MESSAGE = "message"
private const val LOG_KEY_PARAMS_FILE = "file"
private const val LOG_KEY_PARAMS_LINE = "line"
private const val LOG_KEY_PARAMS_MODULE = "module"
private const val LOG_VALUE_PARAMS_MODULE = "call_state"
private const val LOG_LEVEL_INFO = 0
private const val LOG_LEVEL_WARNING = 1
private const val LOG_LEVEL_ERROR = 2
private const val LOG_FUNCTION_CALLER_INDEX = 5
fun i(message: String) {
log(LOG_LEVEL_INFO, message)
}
fun w(message: String) {
log(LOG_LEVEL_WARNING, message)
}
fun e(message: String) {
log(LOG_LEVEL_ERROR, message)
}
private fun log(
level: Int,
message: String,
) {
var context = ContextUtils.getApplicationContext()
if (context == null) {
ContextUtils.initContextFromNative("liteav")
context = ContextUtils.getApplicationContext()
}
if (context == null) {
return
}
try {
val paramsJson = JSONObject()
paramsJson.put(LOG_KEY_PARAMS_LEVEL, level)
paramsJson.put(LOG_KEY_PARAMS_MESSAGE, message)
paramsJson.put(LOG_KEY_PARAMS_MODULE, LOG_VALUE_PARAMS_MODULE)
paramsJson.put(LOG_KEY_PARAMS_FILE, getCallerFileName())
paramsJson.put(LOG_KEY_PARAMS_LINE, getCallerLineNumber())
val loggerJson = JSONObject()
loggerJson.put(LOG_KEY_API, API)
loggerJson.put(LOG_KEY_PARAMS, paramsJson)
TRTCCloud.sharedInstance(context).callExperimentalAPI(loggerJson.toString())
} catch (e: JSONException) {
Log.e("Logger", e.toString())
}
}
private fun getCallerFileName(): String {
val stackTrace = Thread.currentThread().stackTrace
if (stackTrace.size < LOG_FUNCTION_CALLER_INDEX + 1) return ""
return stackTrace[LOG_FUNCTION_CALLER_INDEX].fileName
}
private fun getCallerLineNumber(): Int {
val stackTrace = Thread.currentThread().stackTrace
if (stackTrace.size < LOG_FUNCTION_CALLER_INDEX + 1) return 0
return stackTrace[LOG_FUNCTION_CALLER_INDEX].lineNumber
}
}
}