diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index d5bc026914..4a8c4499e0 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -9,9 +9,11 @@ import com.mogo.eagle.core.data.chain.ChainConstant.Companion.CHAIN_LINK_LOG_ADA 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 @@ -30,13 +32,37 @@ class DevaToolsProvider : IDevaToolsProvider { override fun init(context: Context) { MogoLogCatchManager.init(context) + logCheck(context) initTrace(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() { MogoLogCatchManager.startCatchLog() } + override fun startLogCatch(duration: Int) { + MogoLogCatchManager.startCatchLog(duration) + } + override fun stopLogCatch() { MogoLogCatchManager.stopCatchLog() } @@ -52,8 +78,8 @@ class DevaToolsProvider : IDevaToolsProvider { 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长链数据") + 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) } @@ -67,7 +93,7 @@ class DevaToolsProvider : IDevaToolsProvider { map.forEach { (type, param) -> val fwBuild = this.fwBuildMap[type] fwBuild?.let { - Logger.d(functionName,"param : ${param.des} , record : ${param.record}") + Logger.d(functionName, "param : ${param.des} , record : ${param.record}") it.isRecord = param.record } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt index 364aa33224..3e6c352fd1 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt @@ -7,10 +7,12 @@ import android.os.Message import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.AbsMogoApplication import com.mogo.commons.debug.DebugConfig +import com.mogo.eagle.core.data.constants.MoGoConfig import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager import com.mogo.eagle.core.network.NetConfig 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.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.module.common.MogoApisHandler @@ -45,7 +47,6 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl MogoApisHandler.getInstance().apis .getSocketManagerApi(AbsMogoApplication.getApp().applicationContext) .registerOnMessageListener(LOG_PUSH_TYPE, this) - manualContent.duration = 10 manualContent.pkgName = context.packageName } @@ -78,12 +79,13 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl return false } - fun startCatchLog() { + fun startCatchLog(duration:Int = 10) { if (catchingList.contains(MANUAL_CATCH_PKG_NAME)) { TipToast.shortTip("已经在抓取日志了,请稍后再试") } else { - Logger.d(TAG, "开始抓取日志====") + Logger.d(TAG, "开始抓取日志==== duration : $duration") manualContent.type = START_CATCH_LOG + manualContent.duration = duration startCatchLog(manualContent) } } @@ -99,21 +101,28 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl var delay = (content.duration).toLong() handler.removeMessages(MSG_TRY_CLOSE_LOG) if (delay <= 0) { - // 如果push 下来的delay小于等于0,那就给个默认最大值一小时 + // 如果push 下来的delay小于等于0,那就给个默认值 delay = 10 } handler.sendEmptyMessageDelayed(MSG_TRY_CLOSE_LOG, delay * 1000L * 60) + openLoggerLevel() + logInfoManager = LogInfoManagerFactory.createPushLogInfoManager( mContext, MoGoAiCloudClientConfig.getInstance().sn, content, this ) + logInfoManager?.start() logInfoManager?.registerLogOutListener { lineLog -> CallerDevaToolsListenerManager.invokeDevaToolsLogCatchLines(lineLog) } + + SharedPrefsMgr.getInstance(mContext!!).putBoolean(MoGoConfig.CATCH_LOG, true) + SharedPrefsMgr.getInstance(mContext!!) + .putLong(MoGoConfig.CATCH_LOG_TIME, System.currentTimeMillis()) } private fun stopCatchLog(content: RemoteLogPushContent) { @@ -124,6 +133,9 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl logInfoManager?.stop() logInfoManager = null closeLoggerLevel() + + SharedPrefsMgr.getInstance(mContext!!).putBoolean(MoGoConfig.CATCH_LOG, false) + SharedPrefsMgr.getInstance(mContext!!).putLong(MoGoConfig.CATCH_LOG_TIME, 0) } /** @@ -151,6 +163,10 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl override fun onClose(pkgName: String?) { ThreadUtils.runOnUiThread { + + SharedPrefsMgr.getInstance(mContext!!).putBoolean(MoGoConfig.CATCH_LOG, false) + SharedPrefsMgr.getInstance(mContext!!).putLong(MoGoConfig.CATCH_LOG_TIME, 0) + CallerDevaToolsListenerManager.invokeDevaToolsLogCatchClose() TipToast.shortTip("日志抓取默认计时结束") } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 61280eaee8..8b193bf213 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -55,9 +55,9 @@ class DebugSettingView @JvmOverloads constructor( attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoObuStatusListener, - IMoGoAutopilotStatusListener, IMoGoAutopilotCarStateListener, - IMoGoMapLocationListener, IMoGoAutopilotIdentifyListener, - IMoGoAutopilotPlanningListener { + IMoGoAutopilotStatusListener, IMoGoAutopilotCarStateListener, + IMoGoMapLocationListener, IMoGoAutopilotIdentifyListener, + IMoGoAutopilotPlanningListener { private val TAG = "DebugSettingView" @@ -355,10 +355,8 @@ class DebugSettingView @JvmOverloads constructor( tbLogCatch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { CallerDevaToolsManager.startCatchLog() - SharedPrefsMgr.getInstance(context).putBoolean(MoGoConfig.CATCH_LOG, true) } else { CallerDevaToolsManager.stopCatchLog() - SharedPrefsMgr.getInstance(context).putBoolean(MoGoConfig.CATCH_LOG, false) } } CallerDevaToolsListenerManager.registerDevaToolsLogCatchListener(TAG, @@ -438,15 +436,15 @@ class DebugSettingView @JvmOverloads constructor( tvAutopilotInfo.text = GsonUtils.toJson(mAutoPilotStatusInfo) tvCarInfo.text = - "GPS时间:${mAutoPilotCarStateInfo?.values?.satelliteTime}\n" + - "自车经纬度:\n${mAutoPilotCarStateInfo?.values?.lon}\n${mAutoPilotCarStateInfo?.values?.lat}\n" + "GPS时间:${mAutoPilotCarStateInfo?.values?.satelliteTime}\n" + + "自车经纬度:\n${mAutoPilotCarStateInfo?.values?.lon}\n${mAutoPilotCarStateInfo?.values?.lat}\n" tvIdentifyInfo.text = - "感知数据个数:${mIdentifyDataSize}" + "感知数据个数:${mIdentifyDataSize}" tvTrajectoryInfoSize.text = - "引导线点个数:${mTrajectoryInfoSize}" + "引导线点个数:${mTrajectoryInfoSize}" tvRouteInfoSize.text = - "全局路径规划点个数:${mRouteInfoSize}" + "全局路径规划点个数:${mRouteInfoSize}" // 用完之后重制为0,防止节点回掉突然没数据,导致页面显示还是之前的数据情况 mIdentifyDataSize = 0 diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MoGoConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MoGoConfig.kt index 582dd3262f..ab33038541 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MoGoConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MoGoConfig.kt @@ -14,6 +14,8 @@ object MoGoConfig { // CMD全量日志抓取 const val CATCH_LOG = "CATCH_LOG" + // CMD全量日志抓取当时时间 + const val CATCH_LOG_TIME = "CATCH_LOG_TIME" // 是否是演示(美化)模式,会存在SP中,方便做现场恢复 const val IS_DEMO_MODE = "IS_DEMO_MODE" diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index 6e4ae1dae7..18d9f6b400 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -10,6 +10,8 @@ interface IDevaToolsProvider : IMoGoFunctionServerProvider { fun startLogCatch() + fun startLogCatch(duration: Int) + fun stopLogCatch() fun getTraceInfo():HashMap diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt index 205c168c45..2765d0d12c 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt @@ -4,6 +4,7 @@ import com.alibaba.android.arouter.launcher.ARouter import com.mogo.eagle.core.data.chain.ChainLogParam import com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_DEVA_TOOLS import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider +import com.mogo.eagle.core.utilcode.util.SnackbarUtils object CallerDevaToolsManager { @@ -18,6 +19,14 @@ object CallerDevaToolsManager { devaToolsProviderApi.startLogCatch() } + /** + * 开始抓取全量日志 + * duration 分钟数 + */ + fun startCatchLog(duration: Int){ + devaToolsProviderApi.startLogCatch(duration) + } + /** * 停止抓取全量日志 */ diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java index 89ebda028a..afe552723b 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java @@ -179,13 +179,12 @@ public abstract class AbsMogoApplication extends Application { */ protected void registerSocketHttpDnsTTL(String host) { sApis.addressChangedListener(map -> { - Logger.d("TEST-SOCKET", "ttl callBack ,ready to getCache Dns IP"); String dnsCacheIp = sApis.getCachedHttpDnsIps(host, HTTP_DNS_ADDRESS_TYPE_HTTP); if (dnsCacheIp == null) { return; } - Logger.d("TEST-SOCKET", "获取缓存Dns IP : " + dnsCacheIp + " , 原缓存 IP : " + cacheIp); if (!dnsCacheIp.equals(cacheIp)) { + Logger.d("TEST-SOCKET", "获取缓存Dns IP : " + dnsCacheIp + " , 原缓存 IP : " + cacheIp); socketTTL(); this.cacheIp = dnsCacheIp; } diff --git a/gradle.properties b/gradle.properties index ba61ae3480..4162b63542 100644 --- a/gradle.properties +++ b/gradle.properties @@ -56,11 +56,11 @@ bytex.forbidUseLenientMutationDuringGetArtifact=true bytex.verifyProguardConfigurationChanged=false bytex.ASM_API=ASM7 -HOOK_LOG_VERSION=1.5.15 +HOOK_LOG_VERSION=1.5.16 SERVICE_CHAIN_VERSION=1.0.52 ################ 外部依赖引用 ################ # loglib -LOGLIB_VERSION=1.2.3 +LOGLIB_VERSION=1.2.8 ######## MogoAiCloudSDK Version ######## # 网络请求 MOGO_NETWORK_VERSION=1.3.19