集成日志抓取工具
This commit is contained in:
@@ -204,6 +204,11 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
mApis.getSearchManagerApi().goSettings();
|
||||
return true;
|
||||
});
|
||||
|
||||
mUploadRoadCondition.setOnLongClickListener(view->{
|
||||
mApis.getMogoMonitorApi().showLogDebugDialog();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
ConstraintLayout rootView = findViewById(R.id.module_entrance_id_top_motion_layout);
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.mogo.service.fragmentmanager.IMogoFragmentManager;
|
||||
import com.mogo.service.intent.IMogoIntentListener;
|
||||
import com.mogo.service.map.IMogoMapService;
|
||||
import com.mogo.service.module.IMogoModuleProvider;
|
||||
import com.mogo.service.monitor.IMogoMonitorProvider;
|
||||
import com.mogo.service.statusmanager.IMogoStatusManager;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.zhidao.autopilot.support.api.AutopilotServiceManage;
|
||||
@@ -170,6 +171,11 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
|
||||
hideLayout();
|
||||
}
|
||||
} );
|
||||
|
||||
// 初始化MonitorModule
|
||||
IMogoMonitorProvider monitorProvider = (IMogoMonitorProvider) ARouter.getInstance().build(MogoServicePaths.PATH_MOGO_MONITOR).navigation(this);
|
||||
monitorProvider.resetActivityContext(this);
|
||||
|
||||
}
|
||||
|
||||
private void startBaseService() {
|
||||
|
||||
@@ -12,6 +12,11 @@ android {
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles 'consumer-rules.pro'
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
arguments = [AROUTER_MODULE_NAME: project.getName()]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
|
||||
@@ -9,10 +9,13 @@ import com.mogo.service.IMogoServiceApis;
|
||||
import com.mogo.service.MogoServicePaths;
|
||||
import com.mogo.service.connection.IMogoOnMessageListener;
|
||||
import com.mogo.service.monitor.IMogoMonitorProvider;
|
||||
import com.mogo.utils.logger.LogLevel;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.zhidao.loglib.LogInfoManager;
|
||||
import com.zhidao.loglib.bean.RemoteLogPushContent;
|
||||
import com.zhidao.loglib.dialog.ILogDialogListener;
|
||||
import com.zhidao.loglib.upload.UploadManager;
|
||||
import com.zhidao.loglib.util.LogInfoManagerFactory;
|
||||
import com.zhidao.loglib.util.LoggingNotice;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -22,7 +25,7 @@ import java.util.Map;
|
||||
* @author tongchenfei
|
||||
*/
|
||||
@Route(path = MogoMonitorConst.MODULE_PATH)
|
||||
public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessageListener<RemoteLogPushContent> {
|
||||
public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessageListener<RemoteLogPushContent>, ILogDialogListener {
|
||||
private static final String TAG = MogoMonitorConst.MODULE_NAME;
|
||||
private LogInfoManager manualCatchLog = null;
|
||||
private Map<String, LogInfoManager> managerCache = new ArrayMap<>();
|
||||
@@ -31,9 +34,9 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessage
|
||||
@Override
|
||||
public void showLogDebugDialog() {
|
||||
if (manualCatchLog == null) {
|
||||
manualCatchLog = new LogInfoManager.Builder(context).build();
|
||||
manualCatchLog = LogInfoManagerFactory.createManualLogInfoManager(context);
|
||||
}
|
||||
manualCatchLog.showDebugWindow();
|
||||
manualCatchLog.showDebugWindow().setDialogListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -57,24 +60,59 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessage
|
||||
|
||||
@Override
|
||||
public void onMsgReceived(RemoteLogPushContent obj) {
|
||||
Logger.d(TAG, "收到push消息: " + obj);
|
||||
switch (obj.getType()){
|
||||
case MogoMonitorConst.START_CATCH_LOG:
|
||||
if (managerCache.containsKey(obj.getPkgName())) {
|
||||
Logger.d(TAG, "这个包名的日志正在抓了: " + obj);
|
||||
return;
|
||||
}
|
||||
LogInfoManager infoManager = new LogInfoManager.Builder(context).build();
|
||||
openLoggerLevel();
|
||||
LogInfoManager infoManager =
|
||||
LogInfoManagerFactory.createPushLogInfoManager(context, obj);
|
||||
infoManager.start();
|
||||
managerCache.put(obj.getPkgName(), infoManager);
|
||||
break;
|
||||
case MogoMonitorConst.STOP_CATCH_LOG:
|
||||
LogInfoManager stopManager = managerCache.get(obj.getPkgName());
|
||||
LogInfoManager stopManager = managerCache.remove(obj.getPkgName());
|
||||
if (stopManager != null) {
|
||||
stopManager.stop();
|
||||
}
|
||||
closeLoggerLevel();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLogStart() {
|
||||
// 这个是通过对话框点击开始的回调
|
||||
isInManualCatchLog = true;
|
||||
openLoggerLevel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLogStop() {
|
||||
// 这个是通过对话框点击结束的回调
|
||||
isInManualCatchLog = false;
|
||||
closeLoggerLevel();
|
||||
}
|
||||
private boolean isInManualCatchLog = false;
|
||||
|
||||
/**
|
||||
* 放开Logger的限制
|
||||
*/
|
||||
private void openLoggerLevel(){
|
||||
Logger.init(LogLevel.DEBUG);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据状态收紧Logger的限制
|
||||
*/
|
||||
private void closeLoggerLevel(){
|
||||
if (!isInManualCatchLog && managerCache.size() == 0) {
|
||||
Logger.init( BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.mogo.service.module.IMogoMarkerService;
|
||||
import com.mogo.service.module.IMogoRegisterCenter;
|
||||
import com.mogo.service.module.IMogoSearchManager;
|
||||
import com.mogo.service.module.IMogoSettingManager;
|
||||
import com.mogo.service.monitor.IMogoMonitorProvider;
|
||||
import com.mogo.service.network.IMogoNetwork;
|
||||
import com.mogo.service.obu.IMogoObuManager;
|
||||
import com.mogo.service.passport.IMogoPassportManager;
|
||||
@@ -243,4 +244,10 @@ public interface IMogoServiceApis extends IProvider {
|
||||
* @return
|
||||
*/
|
||||
IMogoAuthManager getAuthManagerApi();
|
||||
|
||||
/**
|
||||
* 获取Monitor相关api
|
||||
* @return
|
||||
*/
|
||||
IMogoMonitorProvider getMogoMonitorApi();
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.mogo.service.module.IMogoMarkerService;
|
||||
import com.mogo.service.module.IMogoRegisterCenter;
|
||||
import com.mogo.service.module.IMogoSearchManager;
|
||||
import com.mogo.service.module.IMogoSettingManager;
|
||||
import com.mogo.service.monitor.IMogoMonitorProvider;
|
||||
import com.mogo.service.network.IMogoNetwork;
|
||||
import com.mogo.service.obu.IMogoObuManager;
|
||||
import com.mogo.service.passport.IMogoPassportManager;
|
||||
@@ -206,7 +207,12 @@ public class MogoServiceApis implements IMogoServiceApis {
|
||||
return getApiInstance( IMogoAuthManager.class, MogoServicePaths.PATH_AGREEMENT );
|
||||
}
|
||||
|
||||
private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) {
|
||||
@Override
|
||||
public IMogoMonitorProvider getMogoMonitorApi() {
|
||||
return getApiInstance(IMogoMonitorProvider.class,MogoServicePaths.PATH_MOGO_MONITOR);
|
||||
}
|
||||
|
||||
private static < T extends IProvider > T getApiInstance(Class< T > clazz, String path ) {
|
||||
T inst = SingletonsHolder.get( clazz );
|
||||
if ( inst == null ) {
|
||||
synchronized ( sLock ) {
|
||||
|
||||
Reference in New Issue
Block a user