This commit is contained in:
zhongchao
2022-02-21 20:25:59 +08:00
parent 55efaaed89
commit 5bc5c25228
14 changed files with 121 additions and 39 deletions

View File

@@ -48,6 +48,7 @@ dependencies {
implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.mogologlib
implementation rootProject.ext.dependencies.mogochainbase
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogoserviceapi

View File

@@ -1,4 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zhjt.mogo_core_function_devatools">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
</manifest>

View File

@@ -1,19 +1,35 @@
package com.zhjt.mogo_core_function_devatools
import android.annotation.SuppressLint
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
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.MogoServicePaths
import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
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.logcatch.MogoLogCatchManager
import com.zhjt.service.chain.core.ChainTraceStarter
@Route(path = MogoServicePaths.PATH_DEVA_TOOLS)
class DevaToolsProvider : IDevaToolsProvider {
private val traceInfoCache = hashMapOf<Int, ChainLogParam>()
private val fwBuildMap: MutableMap<Int, FwBuild> = HashMap()
override val functionName: String
get() = "DevaToolsProvider"
override fun init(context: Context) {
MogoLogCatchManager.init(context)
initTrace(context)
}
override fun startLogCatch() {
@@ -24,6 +40,38 @@ class DevaToolsProvider : IDevaToolsProvider {
MogoLogCatchManager.stopCatchLog()
}
private fun initTrace(context: Context) {
// 初始化Trace抓取服务
val pkgName = Utils.getApp().packageName
ChainTraceStarter.start(pkgName, DeviceUtils.getMacAddress())
// 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,"IPC连接状态")
traceInfoCache[CHAIN_LINK_LOG_WEB_SOCKET_DATA] = ChainLogParam(false,"IPC长链数据")
FileWriteManager.getInstance()
.init(context, MoGoAiCloudClientConfig.getInstance().sn, pkgName, fwBuildMap)
}
override fun getTraceInfo(): HashMap<Int, ChainLogParam> {
return traceInfoCache
}
@SuppressLint("NewApi")
override fun refreshTraceInfo(map: HashMap<Int, ChainLogParam>) {
map.forEach { (type, param) ->
val fwBuild = this.fwBuildMap[type]
fwBuild?.let {
it.isRecord = param.record
}
}
FileWriteManager.getInstance().operateChainMap(fwBuildMap)
}
override fun onDestroy() {
MogoLogCatchManager.onDestroy()
}

View File

@@ -13,7 +13,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.module.common.MogoApisHandler
import com.mogo.service.cloud.socket.IMogoOnMessageListener
import com.zhidao.loglib.bean.RemoteLogPushContent
@@ -25,7 +24,6 @@ import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companio
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.LOG_PUSH_TYPE
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.START_CATCH_LOG
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.STOP_CATCH_LOG
import java.io.File
@SuppressLint("StaticFieldLeak")
object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handler.Callback,
@@ -108,8 +106,9 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
openLoggerLevel()
logInfoManager = LogInfoManagerFactory.createPushLogInfoManager(
mContext,
MoGoAiCloudClientConfig.getInstance().sn + File.separator + TimeUtils.formatYMD(System.currentTimeMillis()),
content, this
MoGoAiCloudClientConfig.getInstance().sn,
content,
this
)
logInfoManager?.start()
logInfoManager?.registerLogOutListener { lineLog ->