This commit is contained in:
zhongchao
2022-03-09 18:14:17 +08:00
parent c41a813389
commit 06f3cfdd8b
316 changed files with 54975 additions and 63 deletions

View File

@@ -4,58 +4,27 @@ import android.annotation.SuppressLint
import android.content.Context
import android.view.View
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.autopilot.AutoPilotRecordResult
import com.mogo.eagle.core.data.chain.ChainConstant.Companion.CHAIN_LINK_LOG_ADAS_INIT
import com.mogo.eagle.core.data.chain.ChainConstant.Companion.CHAIN_LINK_LOG_ADAS_MSG
import com.mogo.eagle.core.data.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS
import com.mogo.eagle.core.data.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_DATA
import com.mogo.eagle.core.data.chain.ChainLogParam
import com.mogo.eagle.core.data.constants.MoGoConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.mogo.eagle.core.utilcode.util.Utils
import com.zhidao.loglib.fw.FileWriteManager
import com.zhidao.loglib.fw.FwBuild
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager
import com.zhjt.service.chain.core.ChainTraceStarter
import com.zhjt.mogo_core_function_devatools.trace.TraceManager.Companion.traceManager
@Route(path = MogoServicePaths.PATH_DEVA_TOOLS)
class DevaToolsProvider : IDevaToolsProvider {
private val traceInfoCache = hashMapOf<Int, ChainLogParam>()
private val fwBuildMap: MutableMap<Int, FwBuild> = HashMap()
companion object {
const val MODULE_NAME = "DevaTools"
}
override val functionName: String
get() = "DevaToolsProvider"
override fun init(context: Context) {
initTrace(context)
traceManager.init(context)
MogoLogCatchManager.init(context)
logCheck(context)
}
private fun logCheck(context: Context) {
val logger = SharedPrefsMgr.getInstance(context).getBoolean(MoGoConfig.CATCH_LOG, false)
val loggerTime = SharedPrefsMgr.getInstance(context).getLong(MoGoConfig.CATCH_LOG_TIME, 0)
val logCatchDuration = (System.currentTimeMillis() - loggerTime) / 1000 / 60
if (logger && loggerTime > 0) {
val logTime: Int = if (10 - logCatchDuration < 1) {
1
} else {
10 - logCatchDuration.toInt()
}
MogoLogCatchManager.startCatchLog(logTime)
} else {
Logger.d(
functionName,
"logCheck logger : $logger , logCatchDuration : $logCatchDuration"
)
}
}
override fun startLogCatch() {
@@ -70,37 +39,13 @@ class DevaToolsProvider : IDevaToolsProvider {
MogoLogCatchManager.stopCatchLog()
}
private fun initTrace(context: Context) {
// 初始化Trace抓取服务
val pkgName = Utils.getApp().packageName
ChainTraceStarter.start(pkgName, DeviceUtils.getMacAddress(), false)
// Trace过程中进行日志抓取对日志进行配置
fwBuildMap[CHAIN_LINK_LOG_CONNECT_STATUS] =
FwBuild(true, pkgName + CHAIN_LINK_LOG_ADAS_INIT, 5_000)
fwBuildMap[CHAIN_LINK_LOG_WEB_SOCKET_DATA] =
FwBuild(false, pkgName + CHAIN_LINK_LOG_ADAS_MSG, 500)
traceInfoCache[CHAIN_LINK_LOG_CONNECT_STATUS] = ChainLogParam(true, "ADAS连接状态")
traceInfoCache[CHAIN_LINK_LOG_WEB_SOCKET_DATA] = ChainLogParam(false, "ADAS长链数据")
FileWriteManager.getInstance()
.init(context, MoGoAiCloudClientConfig.getInstance().sn, pkgName, fwBuildMap)
}
override fun getTraceInfo(): HashMap<Int, ChainLogParam> {
return traceInfoCache
return traceManager.getTraceInfo()
}
@SuppressLint("NewApi")
override fun refreshTraceInfo(map: HashMap<Int, ChainLogParam>) {
map.forEach { (type, param) ->
val fwBuild = this.fwBuildMap[type]
fwBuild?.let {
Logger.d(functionName, "param : ${param.des} , record : ${param.record}")
it.isRecord = param.record
}
}
FileWriteManager.getInstance().operateChainMap(fwBuildMap)
traceManager.refreshTraceInfo(map)
}
override fun initBadCase(view: View, onShow: (() -> Unit)?, onHide: (() -> Unit)?) {

View File

@@ -8,6 +8,7 @@ import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.constants.MoGoConfig
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
@@ -50,6 +51,26 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
.getSocketManagerApi(AbsMogoApplication.getApp().applicationContext)
.registerOnMessageListener(LOG_PUSH_TYPE, this)
manualContent.pkgName = context.packageName
logCheck(context)
}
private fun logCheck(context: Context) {
val logger = SharedPrefsMgr.getInstance(context).getBoolean(MoGoConfig.CATCH_LOG, false)
val loggerTime = SharedPrefsMgr.getInstance(context).getLong(MoGoConfig.CATCH_LOG_TIME, 0)
val logCatchDuration = (System.currentTimeMillis() - loggerTime) / 1000 / 60
if (logger && loggerTime > 0) {
val logTime: Int = if (10 - logCatchDuration < 1) {
1
} else {
10 - logCatchDuration.toInt()
}
startCatchLog(logTime)
} else {
Logger.d(
TAG,
"logCheck logger : $logger , logCatchDuration : $logCatchDuration"
)
}
}
override fun target(): Class<RemoteLogPushContent> {
@@ -113,6 +134,7 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
logInfoManager = LogInfoManagerFactory.createPushLogInfoManager(
mContext,
MoGoAiCloudClientConfig.getInstance().sn,
AppConfigInfo.toString(),
content,
this
)

View File

@@ -0,0 +1,60 @@
package com.zhjt.mogo_core_function_devatools.trace
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.chain.ChainConstant
import com.mogo.eagle.core.data.chain.ChainLogParam
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.mogo.eagle.core.utilcode.util.Utils
import com.zhidao.loglib.fw.FileWriteManager
import com.zhidao.loglib.fw.FwBuild
import com.zhjt.mogo_core_function_devatools.DevaToolsProvider.Companion.MODULE_NAME
import com.zhjt.service.chain.core.ChainTraceStarter
class TraceManager {
private val traceInfoCache = hashMapOf<Int, ChainLogParam>()
private val fwBuildMap: MutableMap<Int, FwBuild> = HashMap()
companion object {
val traceManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
TraceManager()
}
}
fun init(context: Context) {
// 初始化Trace抓取服务
val pkgName = Utils.getApp().packageName
ChainTraceStarter.start(pkgName, DeviceUtils.getMacAddress(), false)
// Trace过程中进行日志抓取对日志进行配置
fwBuildMap[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] =
FwBuild(true, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_INIT, 5_000)
fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA] =
FwBuild(false, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_MSG, 500)
traceInfoCache[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] =
ChainLogParam(true, "ADAS连接状态")
traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA] =
ChainLogParam(false, "ADAS长链数据")
FileWriteManager.getInstance()
.init(context, MoGoAiCloudClientConfig.getInstance().sn, pkgName, fwBuildMap)
}
fun getTraceInfo(): HashMap<Int, ChainLogParam> {
return traceInfoCache
}
fun refreshTraceInfo(map: HashMap<Int, ChainLogParam>) {
map.forEach { (type, param) ->
val fwBuild = this.fwBuildMap[type]
fwBuild?.let {
Logger.d(MODULE_NAME, "param : ${param.des} , record : ${param.record}")
it.isRecord = param.record
}
}
FileWriteManager.getInstance().operateChainMap(fwBuildMap)
}
}