You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.2 KiB
71 lines
2.2 KiB
package com.fr.design.mainframe.messagecollect; |
|
|
|
import com.fr.concurrent.NamedThreadFactory; |
|
import com.fr.design.DesignerEnvManager; |
|
import com.fr.design.mainframe.errorinfo.ErrorInfo; |
|
import com.fr.log.FineLoggerFactory; |
|
import com.fr.stable.StringUtils; |
|
import com.fr.start.common.DesignerStartupContext; |
|
import com.fr.workspace.WorkContext; |
|
|
|
import java.util.concurrent.ExecutorService; |
|
import java.util.concurrent.Executors; |
|
|
|
/** |
|
* |
|
* @author hades |
|
* @version 10.0 |
|
* Created by hades on 2020/1/8 |
|
*/ |
|
public class StartErrorMessageCollector { |
|
|
|
private static final StartErrorMessageCollector INSTANCE = new StartErrorMessageCollector(); |
|
|
|
private ExecutorService executorService = Executors.newSingleThreadExecutor(new NamedThreadFactory(StartErrorMessageCollector.this.getClass())); |
|
private String uuid; |
|
private String activeKey; |
|
|
|
private boolean extraJudgeStart = false; |
|
|
|
public static StartErrorMessageCollector getInstance() { |
|
return INSTANCE; |
|
} |
|
|
|
private StartErrorMessageCollector() { |
|
DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); |
|
this.uuid = envManager.getUUID(); |
|
this.activeKey = envManager.getActivationKey(); |
|
} |
|
|
|
public void record(String id, String msg, String detail) { |
|
FineLoggerFactory.getLogger().error(id + ": " + msg + ", detail: " + detail); |
|
ErrorInfo errorInfo = new ErrorInfo(StringUtils.EMPTY, uuid, activeKey); |
|
errorInfo.setLogid(id); |
|
errorInfo.setLog(msg); |
|
errorInfo.setStackTrace(detail); |
|
errorInfo.setStarting(DesignerStartupContext.getInstance().isOnStartup() || extraJudgeStart); |
|
errorInfo.setRemote(!WorkContext.getCurrent().isLocal()); |
|
errorInfo.saveAsJSON(); |
|
} |
|
|
|
/** |
|
* 异步记录 |
|
*/ |
|
public void asyncRecord(String id, String msg, String detail) { |
|
executorService.submit(() -> { |
|
record(id, msg, detail); |
|
StartErrorMessageCollector.getInstance().setExtraJudgeStart(false); |
|
}); |
|
} |
|
|
|
public void record(String id, String msg) { |
|
record(id, msg, StringUtils.EMPTY); |
|
} |
|
|
|
public void setExtraJudgeStart(boolean extraJudgeStart) { |
|
this.extraJudgeStart = extraJudgeStart; |
|
} |
|
|
|
|
|
|
|
}
|
|
|