80 lines
2.8 KiB
Kotlin
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
|
|
}
|
|
}
|
|
}
|