feat: 3.2.0

优化服务端日志
This commit is contained in:
byteblogs168 2024-03-22 11:34:43 +08:00
parent 96b0923043
commit 80fa6df96a
23 changed files with 271 additions and 302 deletions

View File

@ -0,0 +1,17 @@
package com.aizuda.easy.retry.server.common;
import com.aizuda.easy.retry.common.log.dto.LogContentDTO;
import com.aizuda.easy.retry.common.log.enums.LogTypeEnum;
import com.aizuda.easy.retry.server.common.dto.LogMetaDTO;
/**
* @author: xiaowoniu
* @date : 2024-03-22
* @since : 3.2.0
*/
public interface LogStorage {
LogTypeEnum logType();
void storage(final LogContentDTO logContentDTO, final LogMetaDTO logMetaDTO);
}

View File

@ -1,6 +1,5 @@
package com.aizuda.easy.retry.server.retry.task.support.appender;
package com.aizuda.easy.retry.server.common.appender;
import akka.actor.ActorRef;
import ch.qos.logback.classic.spi.IThrowableProxy;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.classic.spi.StackTraceElementProxy;
@ -12,24 +11,20 @@ import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.common.log.constant.LogFieldConstants;
import com.aizuda.easy.retry.common.log.dto.LogContentDTO;
import com.aizuda.easy.retry.common.log.dto.TaskLogFieldDTO;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.retry.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.support.dispatch.actor.log.RetryTaskLogDTO;
import com.google.common.collect.Lists;
import com.aizuda.easy.retry.server.common.LogStorage;
import com.aizuda.easy.retry.server.common.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.common.log.LogStorageFactory;
import org.slf4j.MDC;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* @author xiaowoniu
* @author wodeyangzipingpingwuqi
* @date 2023-12-27
* @since 3.2.0
* @since 2.6.0
*/
public class EasyRetryServerLogbackAppender<E> extends UnsynchronizedAppenderBase<E> {
@ -90,18 +85,11 @@ public class EasyRetryServerLogbackAppender<E> extends UnsynchronizedAppenderBas
* @param logMetaDTO 日志元数据
*/
private void saveLog(final LogContentDTO logContentDTO, final LogMetaDTO logMetaDTO) {
RetryTaskLogDTO jobLogDTO = new RetryTaskLogDTO();
Map<String, String> messageMap = logContentDTO.getFieldList()
.stream()
.filter(logTaskDTO_ -> !Objects.isNull(logTaskDTO_.getValue()))
.collect(Collectors.toMap(TaskLogFieldDTO::getName, TaskLogFieldDTO::getValue));
jobLogDTO.setMessage(JsonUtil.toJsonString(Lists.newArrayList(messageMap)));
jobLogDTO.setGroupName(logMetaDTO.getGroupName());
jobLogDTO.setNamespaceId(logMetaDTO.getNamespaceId());
jobLogDTO.setUniqueId(logMetaDTO.getUniqueId());
jobLogDTO.setRealTime(logMetaDTO.getTimestamp());
ActorRef actorRef = ActorGenerator.jobLogActor();
actorRef.tell(jobLogDTO, actorRef);
LogStorage logStorage = LogStorageFactory.get(logMetaDTO.getLogType());
if (Objects.nonNull(logStorage)) {
logStorage.storage(logContentDTO, logMetaDTO);
}
}
private String getThrowableField(LoggingEvent event) {

View File

@ -1,7 +1,7 @@
package com.aizuda.easy.retry.server.retry.task.dto;
package com.aizuda.easy.retry.server.common.dto;
import com.aizuda.easy.retry.common.core.util.JsonUtil;
import lombok.Builder;
import com.aizuda.easy.retry.common.log.enums.LogTypeEnum;
import lombok.Data;
/**
@ -10,7 +10,6 @@ import lombok.Data;
* @since 3.2.0
*/
@Data
@Builder
public class LogMetaDTO {
/**
@ -23,18 +22,13 @@ public class LogMetaDTO {
*/
private String groupName;
/**
* 组名称
*/
private String uniqueId;
/**
* 时间
*/
private Long timestamp;
@Override
public String toString() {
return JsonUtil.toJsonString(this);
}
/**
* 日志类型
*/
private LogTypeEnum logType;
}

View File

@ -0,0 +1,25 @@
package com.aizuda.easy.retry.server.common.log;
import com.aizuda.easy.retry.common.log.enums.LogTypeEnum;
import com.aizuda.easy.retry.server.common.LogStorage;
import java.util.HashMap;
import java.util.Map;
/**
* @author: xiaowoniu
* @date : 2024-03-22
* @since : 3.2.0
*/
public final class LogStorageFactory {
private static final Map<LogTypeEnum, LogStorage> LOG_STORAGE = new HashMap<>();
public static void register(LogTypeEnum logType, LogStorage logStorage) {
LOG_STORAGE.put(logType, logStorage);
}
public static LogStorage get(LogTypeEnum logType) {
return LOG_STORAGE.get(logType);
}
}

View File

@ -1,25 +1,23 @@
package com.aizuda.easy.retry.server.job.task.dto;
import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.common.log.enums.LogTypeEnum;
import com.aizuda.easy.retry.server.common.dto.LogMetaDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author xiaowoniu
* @date 2024-01-10 22:56:33
* @since 2.6.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class LogMetaDTO {
public class JobLogMetaDTO extends LogMetaDTO {
/**
* 命名空间
*/
private String namespaceId;
/**
* 组名称
*/
private String groupName;
public JobLogMetaDTO () {
setLogType(LogTypeEnum.JOB);
}
/**
* 任务信息id
@ -36,10 +34,6 @@ public class LogMetaDTO {
*/
private Long taskId;
/**
* 时间
*/
private Long timestamp;
@Override
public String toString() {

View File

@ -2,6 +2,7 @@ package com.aizuda.easy.retry.server.job.task.support;
import com.aizuda.easy.retry.client.model.request.DispatchJobRequest;
import com.aizuda.easy.retry.client.model.request.DispatchJobResultRequest;
import com.aizuda.easy.retry.server.job.task.dto.JobLogMetaDTO;
import com.aizuda.easy.retry.server.job.task.dto.*;
import com.aizuda.easy.retry.server.job.task.support.block.job.BlockStrategyContext;
import com.aizuda.easy.retry.server.job.task.support.executor.workflow.WorkflowExecutorContext;
@ -77,7 +78,7 @@ public interface JobTaskConverter {
JobLogMessage toJobLogMessage(LogTaskDTO logTaskDTO);
LogMetaDTO toJobLogDTO(BaseDTO baseDTO);
JobLogMetaDTO toJobLogDTO(BaseDTO baseDTO);
ClientCallbackContext toClientCallbackContext(DispatchJobResultRequest request);

View File

@ -1,141 +0,0 @@
package com.aizuda.easy.retry.server.job.task.support.appender;
import akka.actor.ActorRef;
import ch.qos.logback.classic.spi.IThrowableProxy;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.classic.spi.StackTraceElementProxy;
import ch.qos.logback.classic.spi.ThrowableProxyUtil;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.UnsynchronizedAppenderBase;
import cn.hutool.core.util.StrUtil;
import com.aizuda.easy.retry.common.log.constant.LogFieldConstants;
import com.aizuda.easy.retry.common.log.dto.LogContentDTO;
import com.aizuda.easy.retry.common.log.dto.TaskLogFieldDTO;
import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.job.task.dto.JobLogDTO;
import com.aizuda.easy.retry.server.job.task.dto.LogMetaDTO;
import com.google.common.collect.Lists;
import org.slf4j.MDC;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* @author wodeyangzipingpingwuqi
* @date 2023-12-27
* @since 2.6.0
*/
public class EasyRetryServerLogbackAppender<E> extends UnsynchronizedAppenderBase<E> {
@Override
protected void append(E eventObject) {
// Not job context
if (!(eventObject instanceof LoggingEvent) || Objects.isNull(
MDC.getMDCAdapter().get(LogFieldConstants.MDC_REMOTE))) {
return;
}
MDC.getMDCAdapter().remove(LogFieldConstants.MDC_REMOTE);
// Prepare processing
((LoggingEvent) eventObject).prepareForDeferredProcessing();
LoggingEvent event = (LoggingEvent) eventObject;
LogContentDTO logContentDTO = new LogContentDTO();
logContentDTO.addLevelField(event.getLevel().levelStr);
logContentDTO.addThreadField(event.getThreadName());
logContentDTO.addLocationField(getLocationField(event));
logContentDTO.addThrowableField(getThrowableField(event));
LogMetaDTO logMetaDTO = null;
try {
String patternString = "<\\|>(.*?)<\\|>";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(event.getFormattedMessage());
while (matcher.find()) {
String extractedData = matcher.group(1);
if (StrUtil.isBlank(extractedData)) {
continue;
}
logMetaDTO = JsonUtil.parseObject(extractedData, LogMetaDTO.class);
String message = event.getFormattedMessage().replaceFirst(patternString, StrUtil.EMPTY);
logContentDTO.addMessageField(message);
logContentDTO.addTimeStamp(Optional.ofNullable(logMetaDTO.getTimestamp()).orElse(event.getTimeStamp()));
break;
}
} catch (Exception e) {
EasyRetryLog.LOCAL.error("日志解析失败. msg:[{}]", event.getFormattedMessage(), e);
}
if (Objects.isNull(logMetaDTO)) {
return;
}
// 保存执行的日志
saveLog(logContentDTO, logMetaDTO);
}
/**
* 保存日志
*
* @param logContentDTO 日志内容
* @param logMetaDTO 日志元数据
*/
private void saveLog(final LogContentDTO logContentDTO, final LogMetaDTO logMetaDTO) {
JobLogDTO jobLogDTO = new JobLogDTO();
Map<String, String> messageMap = logContentDTO.getFieldList()
.stream()
.filter(logTaskDTO_ -> !Objects.isNull(logTaskDTO_.getValue()))
.collect(Collectors.toMap(TaskLogFieldDTO::getName, TaskLogFieldDTO::getValue));
jobLogDTO.setMessage(JsonUtil.toJsonString(Lists.newArrayList(messageMap)));
jobLogDTO.setTaskId(logMetaDTO.getTaskId());
jobLogDTO.setJobId(logMetaDTO.getJobId());
jobLogDTO.setGroupName(logMetaDTO.getGroupName());
jobLogDTO.setNamespaceId(logMetaDTO.getNamespaceId());
jobLogDTO.setTaskBatchId(logMetaDTO.getTaskBatchId());
jobLogDTO.setRealTime(logContentDTO.getTimeStamp());
ActorRef actorRef = ActorGenerator.jobLogActor();
actorRef.tell(jobLogDTO, actorRef);
}
private String getThrowableField(LoggingEvent event) {
IThrowableProxy iThrowableProxy = event.getThrowableProxy();
if (iThrowableProxy != null) {
String throwable = getExceptionInfo(iThrowableProxy);
throwable += formatThrowable(event.getThrowableProxy().getStackTraceElementProxyArray());
return throwable;
}
return null;
}
private String getLocationField(LoggingEvent event) {
StackTraceElement[] caller = event.getCallerData();
if (caller != null && caller.length > 0) {
return caller[0].toString();
}
return null;
}
private String formatThrowable(StackTraceElementProxy[] stackTraceElementProxyArray) {
StringBuilder builder = new StringBuilder();
for (StackTraceElementProxy step : stackTraceElementProxyArray) {
builder.append(CoreConstants.LINE_SEPARATOR);
String string = step.toString();
builder.append(CoreConstants.TAB).append(string);
ThrowableProxyUtil.subjoinPackagingData(builder, step);
}
return builder.toString();
}
private String getExceptionInfo(IThrowableProxy iThrowableProxy) {
String s = iThrowableProxy.getClassName();
String message = iThrowableProxy.getMessage();
return (message != null) ? (s + ": " + message) : s;
}
}

View File

@ -3,10 +3,8 @@ package com.aizuda.easy.retry.server.job.task.support.callback;
import akka.actor.ActorRef;
import cn.hutool.core.util.StrUtil;
import com.aizuda.easy.retry.common.core.enums.JobTaskStatusEnum;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.util.ClientInfoUtils;
import com.aizuda.easy.retry.server.job.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.job.task.dto.RealJobExecutorDTO;
import com.aizuda.easy.retry.server.job.task.enums.JobRetrySceneEnum;
import com.aizuda.easy.retry.server.job.task.support.ClientCallbackHandler;
@ -16,7 +14,6 @@ import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMappe
import com.aizuda.easy.retry.template.datasource.persistence.po.Job;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;

View File

@ -1,31 +1,18 @@
package com.aizuda.easy.retry.server.job.task.support.callback;
import akka.actor.ActorRef;
import com.aizuda.easy.retry.common.core.enums.JobTaskStatusEnum;
import com.aizuda.easy.retry.common.core.enums.JobTaskTypeEnum;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.cache.CacheRegisterTable;
import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo;
import com.aizuda.easy.retry.server.common.handler.ClientNodeAllocateHandler;
import com.aizuda.easy.retry.server.common.util.ClientInfoUtils;
import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO;
import com.aizuda.easy.retry.server.job.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.job.task.dto.RealJobExecutorDTO;
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobMapper;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper;
import com.aizuda.easy.retry.template.datasource.persistence.po.Job;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Objects;
import java.util.Set;
/**
* @author www.byteblogs.com

View File

@ -1,22 +1,16 @@
package com.aizuda.easy.retry.server.job.task.support.dispatch;
import akka.actor.AbstractActor;
import akka.actor.ActorRef;
import cn.hutool.core.lang.Assert;
import com.aizuda.easy.retry.common.core.enums.JobTaskTypeEnum;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.common.util.DateUtils;
import com.aizuda.easy.retry.server.job.task.dto.CompleteJobBatchDTO;
import com.aizuda.easy.retry.server.job.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO;
import com.aizuda.easy.retry.server.job.task.dto.JobLogDTO;
import com.aizuda.easy.retry.server.job.task.support.JobTaskStopHandler;
import com.aizuda.easy.retry.server.job.task.support.LockExecutor;
import com.aizuda.easy.retry.server.job.task.support.handler.DistributedLockHandler;
import com.aizuda.easy.retry.server.job.task.support.handler.JobTaskBatchHandler;
import com.aizuda.easy.retry.server.job.task.support.stop.JobTaskStopFactory;
@ -29,13 +23,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionTemplate;
import java.text.MessageFormat;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.Objects;
/**

View File

@ -4,12 +4,10 @@ import akka.actor.AbstractActor;
import akka.actor.ActorRef;
import com.aizuda.easy.retry.client.model.ExecuteResult;
import com.aizuda.easy.retry.client.model.request.DispatchJobRequest;
import com.aizuda.easy.retry.common.core.constant.SystemConstants;
import com.aizuda.easy.retry.common.core.enums.JobTaskStatusEnum;
import com.aizuda.easy.retry.common.core.enums.StatusEnum;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.common.core.model.Result;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.cache.CacheRegisterTable;
import com.aizuda.easy.retry.server.common.client.RequestBuilder;
@ -17,8 +15,7 @@ import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo;
import com.aizuda.easy.retry.server.common.util.DateUtils;
import com.aizuda.easy.retry.server.job.task.client.JobRpcClient;
import com.aizuda.easy.retry.server.job.task.dto.JobExecutorResultDTO;
import com.aizuda.easy.retry.server.job.task.dto.JobLogDTO;
import com.aizuda.easy.retry.server.job.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.job.task.dto.JobLogMetaDTO;
import com.aizuda.easy.retry.server.job.task.dto.RealJobExecutorDTO;
import com.aizuda.easy.retry.server.job.task.support.ClientCallbackHandler;
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
@ -65,13 +62,14 @@ public class RequestClientActor extends AbstractActor {
realJobExecutorDTO.getClientId());
if (Objects.isNull(registerNodeInfo)) {
taskExecuteFailure(realJobExecutorDTO, "客户端不存在");
LogMetaDTO logMetaDTO = JobTaskConverter.INSTANCE.toJobLogDTO(realJobExecutorDTO);
logMetaDTO.setTimestamp(nowMilli);
JobLogMetaDTO jobLogMetaDTO = JobTaskConverter.INSTANCE.toJobLogDTO(realJobExecutorDTO);
jobLogMetaDTO.setTimestamp(nowMilli);
if (realJobExecutorDTO.isRetry()) {
EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败执行重试. 失败原因: 无可执行的客户端. 重试次数:[{}]. <|>{}<|>",
realJobExecutorDTO.getTaskId(), realJobExecutorDTO.getRetryCount(), logMetaDTO);
realJobExecutorDTO.getTaskId(), realJobExecutorDTO.getRetryCount(), jobLogMetaDTO);
} else {
EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败. 失败原因: 无可执行的客户端 <|>{}<|>", realJobExecutorDTO.getTaskId(), logMetaDTO);
EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败. 失败原因: 无可执行的客户端 <|>{}<|>", realJobExecutorDTO.getTaskId(),
jobLogMetaDTO);
}
return;
}
@ -105,13 +103,14 @@ public class RequestClientActor extends AbstractActor {
throwable = re.getUndeclaredThrowable();
}
LogMetaDTO logMetaDTO = JobTaskConverter.INSTANCE.toJobLogDTO(realJobExecutorDTO);
logMetaDTO.setTimestamp(nowMilli);
JobLogMetaDTO jobLogMetaDTO = JobTaskConverter.INSTANCE.toJobLogDTO(realJobExecutorDTO);
jobLogMetaDTO.setTimestamp(nowMilli);
if (realJobExecutorDTO.isRetry()) {
EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败执行重试 重试次数:[{}]. <|>{}<|>", logMetaDTO.getTaskId(),
realJobExecutorDTO.getRetryCount(), logMetaDTO, throwable);
EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败执行重试 重试次数:[{}]. <|>{}<|>", jobLogMetaDTO.getTaskId(),
realJobExecutorDTO.getRetryCount(), jobLogMetaDTO, throwable);
} else {
EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败. <|>{}<|>", logMetaDTO.getTaskId(), logMetaDTO, throwable);
EasyRetryLog.REMOTE.error("taskId:[{}] 任务调度失败. <|>{}<|>", jobLogMetaDTO.getTaskId(),
jobLogMetaDTO, throwable);
}
taskExecuteFailure(realJobExecutorDTO, throwable.getMessage());

View File

@ -12,10 +12,8 @@ import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.client.RequestInterceptor;
import com.aizuda.easy.retry.server.common.dto.CallbackConfig;
import com.aizuda.easy.retry.server.common.enums.ContentTypeEnum;
import com.aizuda.easy.retry.server.job.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.job.task.dto.JobLogMetaDTO;
import com.aizuda.easy.retry.server.job.task.support.WorkflowTaskConverter;
import com.aizuda.easy.retry.server.job.task.support.generator.batch.JobTaskBatchGenerator;
import com.aizuda.easy.retry.server.job.task.support.generator.batch.JobTaskBatchGeneratorContext;
import com.aizuda.easy.retry.server.model.dto.CallbackParamsDTO;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
@ -166,22 +164,22 @@ public class CallbackWorkflowExecutor extends AbstractWorkflowExecutor {
JobTask jobTask = generateJobTask(context, jobTaskBatch);
LogMetaDTO logMetaDTO = new LogMetaDTO();
logMetaDTO.setNamespaceId(context.getNamespaceId());
logMetaDTO.setGroupName(context.getGroupName());
logMetaDTO.setTaskBatchId(jobTaskBatch.getId());
logMetaDTO.setJobId(SystemConstants.CALLBACK_JOB_ID);
logMetaDTO.setTaskId(jobTask.getId());
JobLogMetaDTO jobLogMetaDTO = new JobLogMetaDTO();
jobLogMetaDTO.setNamespaceId(context.getNamespaceId());
jobLogMetaDTO.setGroupName(context.getGroupName());
jobLogMetaDTO.setTaskBatchId(jobTaskBatch.getId());
jobLogMetaDTO.setJobId(SystemConstants.CALLBACK_JOB_ID);
jobLogMetaDTO.setTaskId(jobTask.getId());
if (jobTaskBatch.getTaskBatchStatus() == JobTaskStatusEnum.SUCCESS.getStatus()) {
EasyRetryLog.REMOTE.info("节点[{}]回调成功.\n回调参数:{} \n回调结果:[{}] <|>{}<|>",
context.getWorkflowNodeId(), context.getTaskResult(), context.getEvaluationResult(), logMetaDTO);
context.getWorkflowNodeId(), context.getTaskResult(), context.getEvaluationResult(), jobLogMetaDTO);
} else if (jobTaskBatch.getTaskBatchStatus() == JobTaskStatusEnum.CANCEL.getStatus()) {
EasyRetryLog.REMOTE.warn("节点[{}]取消回调. 取消原因: 任务状态已关闭 <|>{}<|>",
context.getWorkflowNodeId(), logMetaDTO);
context.getWorkflowNodeId(), jobLogMetaDTO);
} else {
EasyRetryLog.REMOTE.error("节点[{}]回调失败.\n失败原因:{} <|>{}<|>",
context.getWorkflowNodeId(),
context.getLogMessage(), logMetaDTO);
context.getLogMessage(), jobLogMetaDTO);
}
}
}

View File

@ -12,7 +12,7 @@ import com.aizuda.easy.retry.server.common.dto.DecisionConfig;
import com.aizuda.easy.retry.server.common.enums.ExpressionTypeEnum;
import com.aizuda.easy.retry.server.common.enums.LogicalConditionEnum;
import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.job.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.job.task.dto.JobLogMetaDTO;
import com.aizuda.easy.retry.server.job.task.support.expression.ExpressionInvocationHandler;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobTaskMapper;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
@ -143,19 +143,19 @@ public class DecisionWorkflowExecutor extends AbstractWorkflowExecutor {
JobTask jobTask = generateJobTask(context, jobTaskBatch);
LogMetaDTO logMetaDTO = new LogMetaDTO();
logMetaDTO.setNamespaceId(context.getNamespaceId());
logMetaDTO.setGroupName(context.getGroupName());
logMetaDTO.setTaskBatchId(jobTaskBatch.getId());
logMetaDTO.setJobId(SystemConstants.DECISION_JOB_ID);
logMetaDTO.setTaskId(jobTask.getId());
JobLogMetaDTO jobLogMetaDTO = new JobLogMetaDTO();
jobLogMetaDTO.setNamespaceId(context.getNamespaceId());
jobLogMetaDTO.setGroupName(context.getGroupName());
jobLogMetaDTO.setTaskBatchId(jobTaskBatch.getId());
jobLogMetaDTO.setJobId(SystemConstants.DECISION_JOB_ID);
jobLogMetaDTO.setTaskId(jobTask.getId());
if (jobTaskBatch.getTaskBatchStatus() == JobTaskStatusEnum.SUCCESS.getStatus()
|| JobOperationReasonEnum.WORKFLOW_NODE_NO_REQUIRED.getReason() == context.getOperationReason()) {
EasyRetryLog.REMOTE.info("节点Id:[{}] 决策完成. 上下文:[{}] 决策结果:[{}] <|>{}<|>",
context.getWorkflowNodeId(), context.getTaskResult(), context.getEvaluationResult(), logMetaDTO);
context.getWorkflowNodeId(), context.getTaskResult(), context.getEvaluationResult(), jobLogMetaDTO);
} else {
EasyRetryLog.REMOTE.error("节点Id:[{}] 决策失败. 上下文:[{}] 失败原因:[{}] <|>{}<|>",
context.getWorkflowNodeId(), context.getTaskResult(), context.getLogMessage(), logMetaDTO);
context.getWorkflowNodeId(), context.getTaskResult(), context.getLogMessage(), jobLogMetaDTO);
}
}

View File

@ -1,7 +1,6 @@
package com.aizuda.easy.retry.server.job.task.support.executor.workflow;
import akka.actor.ActorRef;
import com.aizuda.easy.retry.common.core.constant.SystemConstants;
import com.aizuda.easy.retry.common.core.enums.JobOperationReasonEnum;
import com.aizuda.easy.retry.common.core.enums.JobTaskBatchStatusEnum;
import com.aizuda.easy.retry.common.core.enums.JobTaskStatusEnum;
@ -9,14 +8,10 @@ import com.aizuda.easy.retry.common.core.enums.StatusEnum;
import com.aizuda.easy.retry.common.core.enums.WorkflowNodeTypeEnum;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.enums.JobTaskExecutorSceneEnum;
import com.aizuda.easy.retry.server.common.util.DateUtils;
import com.aizuda.easy.retry.server.job.task.dto.JobLogMetaDTO;
import com.aizuda.easy.retry.server.job.task.dto.JobTaskPrepareDTO;
import com.aizuda.easy.retry.server.job.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
import com.aizuda.easy.retry.server.job.task.support.WorkflowTaskConverter;
import com.aizuda.easy.retry.server.job.task.support.generator.batch.JobTaskBatchGenerator;
import com.aizuda.easy.retry.server.job.task.support.generator.batch.JobTaskBatchGeneratorContext;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTaskBatch;
import lombok.RequiredArgsConstructor;
@ -52,15 +47,15 @@ public class JobTaskWorkflowExecutor extends AbstractWorkflowExecutor {
JobTaskBatch jobTaskBatch = generateJobTaskBatch(context);
JobTask jobTask = generateJobTask(context, jobTaskBatch);
LogMetaDTO logMetaDTO = new LogMetaDTO();
logMetaDTO.setNamespaceId(context.getNamespaceId());
logMetaDTO.setGroupName(context.getGroupName());
logMetaDTO.setTaskBatchId(jobTaskBatch.getId());
logMetaDTO.setJobId(context.getJobId());
logMetaDTO.setTaskId(jobTask.getId());
JobLogMetaDTO jobLogMetaDTO = new JobLogMetaDTO();
jobLogMetaDTO.setNamespaceId(context.getNamespaceId());
jobLogMetaDTO.setGroupName(context.getGroupName());
jobLogMetaDTO.setTaskBatchId(jobTaskBatch.getId());
jobLogMetaDTO.setJobId(context.getJobId());
jobLogMetaDTO.setTaskId(jobTask.getId());
EasyRetryLog.REMOTE.warn("节点[{}]已取消任务执行. 取消原因: 任务已关闭. <|>{}<|>",
context.getWorkflowNodeId(), logMetaDTO);
context.getWorkflowNodeId(), jobLogMetaDTO);
}
@Override

View File

@ -0,0 +1,59 @@
package com.aizuda.easy.retry.server.job.task.support.log;
import akka.actor.ActorRef;
import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.common.log.dto.LogContentDTO;
import com.aizuda.easy.retry.common.log.dto.TaskLogFieldDTO;
import com.aizuda.easy.retry.common.log.enums.LogTypeEnum;
import com.aizuda.easy.retry.server.common.LogStorage;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.common.log.LogStorageFactory;
import com.aizuda.easy.retry.server.job.task.dto.JobLogDTO;
import com.aizuda.easy.retry.server.job.task.dto.JobLogMetaDTO;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author: xiaowoniu
* @date : 2024-03-22
* @since : 3.2.0
*/
@Component
public class JobLogStorage implements LogStorage, InitializingBean {
@Override
public LogTypeEnum logType() {
return LogTypeEnum.JOB;
}
@Override
public void storage(final LogContentDTO logContentDTO, final LogMetaDTO logMetaDTO) {
JobLogMetaDTO jobLogMetaDTO = (JobLogMetaDTO) logMetaDTO;
JobLogDTO jobLogDTO = new JobLogDTO();
Map<String, String> messageMap = logContentDTO.getFieldList()
.stream()
.filter(logTaskDTO_ -> !Objects.isNull(logTaskDTO_.getValue()))
.collect(Collectors.toMap(TaskLogFieldDTO::getName, TaskLogFieldDTO::getValue));
jobLogDTO.setMessage(JsonUtil.toJsonString(Lists.newArrayList(messageMap)));
jobLogDTO.setTaskId(jobLogMetaDTO.getTaskId());
jobLogDTO.setJobId(jobLogMetaDTO.getJobId());
jobLogDTO.setGroupName(logMetaDTO.getGroupName());
jobLogDTO.setNamespaceId(logMetaDTO.getNamespaceId());
jobLogDTO.setTaskBatchId(jobLogMetaDTO.getTaskBatchId());
jobLogDTO.setRealTime(logContentDTO.getTimeStamp());
ActorRef actorRef = ActorGenerator.jobLogActor();
actorRef.tell(jobLogDTO, actorRef);
}
@Override
public void afterPropertiesSet() throws Exception {
LogStorageFactory.register(logType(), this);
}
}

View File

@ -0,0 +1,33 @@
package com.aizuda.easy.retry.server.retry.task.dto;
import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.common.log.enums.LogTypeEnum;
import com.aizuda.easy.retry.server.common.dto.LogMetaDTO;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author xiaowoniu
* @date 2024-01-10 22:56:33
* @since 3.2.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
public class RetryLogMetaDTO extends LogMetaDTO {
public RetryLogMetaDTO () {
setLogType(LogTypeEnum.RETRY);
}
/**
* 组名称
*/
private String uniqueId;
@Override
public String toString() {
return JsonUtil.toJsonString(this);
}
}

View File

@ -2,7 +2,7 @@ package com.aizuda.easy.retry.server.retry.task.support;
import com.aizuda.easy.retry.server.model.dto.RetryLogTaskDTO;
import com.aizuda.easy.retry.server.model.dto.RetryTaskDTO;
import com.aizuda.easy.retry.server.retry.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.dto.RetryLogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.dto.NotifyConfigPartitionTask;
import com.aizuda.easy.retry.server.retry.task.dto.RetryPartitionTask;
import com.aizuda.easy.retry.server.retry.task.generator.task.TaskContext;
@ -51,6 +51,6 @@ public interface RetryTaskConverter {
RetryTaskLogMessage toRetryTaskLogMessage(RetryLogTaskDTO retryLogTaskDTO);
LogMetaDTO toLogMetaDTO(RetryTask retryTask);
RetryLogMetaDTO toLogMetaDTO(RetryTask retryTask);
}

View File

@ -1,26 +1,21 @@
package com.aizuda.easy.retry.server.retry.task.support.dispatch.actor.exec;
import akka.actor.AbstractActor;
import akka.actor.ActorRef;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.aizuda.easy.retry.client.model.RetryCallbackDTO;
import com.aizuda.easy.retry.common.core.enums.StatusEnum;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.common.core.model.Result;
import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.client.RequestBuilder;
import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo;
import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.common.util.ClientInfoUtils;
import com.aizuda.easy.retry.server.common.util.DateUtils;
import com.aizuda.easy.retry.server.retry.task.client.RetryRpcClient;
import com.aizuda.easy.retry.server.retry.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.dto.RetryLogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.support.RetryTaskConverter;
import com.aizuda.easy.retry.server.retry.task.support.RetryTaskLogConverter;
import com.aizuda.easy.retry.server.retry.task.support.context.CallbackRetryContext;
import com.aizuda.easy.retry.server.retry.task.support.dispatch.actor.log.RetryTaskLogDTO;
import com.aizuda.easy.retry.server.retry.task.support.handler.CallbackRetryTaskHandler;
import com.aizuda.easy.retry.server.retry.task.support.retry.RetryExecutor;
import com.aizuda.easy.retry.template.datasource.access.AccessTemplate;
@ -28,14 +23,12 @@ import com.aizuda.easy.retry.template.datasource.access.TaskAccess;
import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTask;
import com.aizuda.easy.retry.template.datasource.persistence.po.SceneConfig;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Objects;
import java.util.concurrent.Callable;
@ -94,9 +87,9 @@ public class ExecCallbackUnitActor extends AbstractActor {
}
} catch (Exception e) {
LogMetaDTO logMetaDTO = RetryTaskConverter.INSTANCE.toLogMetaDTO(retryTask);
logMetaDTO.setTimestamp(DateUtils.toNowMilli());
EasyRetryLog.REMOTE.error("请求客户端异常. <|>{}<|>", retryTask.getUniqueId(), logMetaDTO, e);// retryTaskLog.setMessage(StringUtils.isBlank(e.getMessage()) ? StrUtil.EMPTY : e.getMessage());
RetryLogMetaDTO retryLogMetaDTO = RetryTaskConverter.INSTANCE.toLogMetaDTO(retryTask);
retryLogMetaDTO.setTimestamp(DateUtils.toNowMilli());
EasyRetryLog.REMOTE.error("请求客户端异常. <|>{}<|>", retryTask.getUniqueId(), retryLogMetaDTO, e);// retryTaskLog.setMessage(StringUtils.isBlank(e.getMessage()) ? StrUtil.EMPTY : e.getMessage());
} finally {
// ActorRef actorRef = ActorGenerator.logActor();

View File

@ -1,7 +1,6 @@
package com.aizuda.easy.retry.server.retry.task.support.dispatch.actor.exec;
import akka.actor.AbstractActor;
import akka.actor.ActorRef;
import cn.hutool.core.util.StrUtil;
import com.aizuda.easy.retry.client.model.DispatchRetryDTO;
import com.aizuda.easy.retry.client.model.DispatchRetryResultDTO;
@ -14,14 +13,11 @@ import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.client.RequestBuilder;
import com.aizuda.easy.retry.server.common.dto.RegisterNodeInfo;
import com.aizuda.easy.retry.server.common.util.ClientInfoUtils;
import com.aizuda.easy.retry.server.common.util.DateUtils;
import com.aizuda.easy.retry.server.retry.task.client.RetryRpcClient;
import com.aizuda.easy.retry.server.retry.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.dto.RetryLogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.support.RetryTaskConverter;
import com.aizuda.easy.retry.server.retry.task.support.RetryTaskLogConverter;
import com.aizuda.easy.retry.server.retry.task.support.context.MaxAttemptsPersistenceRetryContext;
import com.aizuda.easy.retry.server.retry.task.support.dispatch.actor.log.RetryTaskLogDTO;
import com.aizuda.easy.retry.server.retry.task.support.retry.RetryExecutor;
import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTask;
import com.aizuda.easy.retry.template.datasource.persistence.po.SceneConfig;
@ -30,7 +26,6 @@ import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Objects;
import java.util.concurrent.Callable;
@ -105,9 +100,9 @@ public class ExecUnitActor extends AbstractActor {
}
} catch (Exception e) {
LogMetaDTO logMetaDTO = RetryTaskConverter.INSTANCE.toLogMetaDTO(retryTask);
logMetaDTO.setTimestamp(DateUtils.toNowMilli());
EasyRetryLog.REMOTE.error("请求客户端异常. <|>{}<|>", retryTask.getUniqueId(), logMetaDTO, e);
RetryLogMetaDTO retryLogMetaDTO = RetryTaskConverter.INSTANCE.toLogMetaDTO(retryTask);
retryLogMetaDTO.setTimestamp(DateUtils.toNowMilli());
EasyRetryLog.REMOTE.error("请求客户端异常. <|>{}<|>", retryTask.getUniqueId(), retryLogMetaDTO, e);
} finally {
// ActorRef actorRef = ActorGenerator.logActor();

View File

@ -1,7 +1,6 @@
package com.aizuda.easy.retry.server.retry.task.support.dispatch.actor.result;
import akka.actor.AbstractActor;
import akka.actor.ActorRef;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.Pair;
import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum;
@ -11,9 +10,6 @@ import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.config.SystemProperties;
import com.aizuda.easy.retry.server.common.enums.SyetemTaskTypeEnum;
import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.retry.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.support.RetryTaskLogConverter;
import com.aizuda.easy.retry.server.retry.task.support.dispatch.actor.log.RetryTaskLogDTO;
import com.aizuda.easy.retry.server.retry.task.support.event.RetryTaskFailMoreThresholdAlarmEvent;
import com.aizuda.easy.retry.server.retry.task.support.handler.CallbackRetryTaskHandler;
import com.aizuda.easy.retry.template.datasource.access.AccessTemplate;

View File

@ -3,15 +3,13 @@ package com.aizuda.easy.retry.server.retry.task.support.dispatch.task;
import akka.actor.ActorRef;
import cn.hutool.core.lang.Pair;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.config.SystemProperties;
import com.aizuda.easy.retry.server.common.handler.ClientNodeAllocateHandler;
import com.aizuda.easy.retry.server.common.IdempotentStrategy;
import com.aizuda.easy.retry.server.common.util.DateUtils;
import com.aizuda.easy.retry.server.retry.task.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.dto.RetryLogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.support.RetryContext;
import com.aizuda.easy.retry.server.retry.task.support.RetryTaskConverter;
import com.aizuda.easy.retry.server.retry.task.support.dispatch.actor.log.RetryTaskLogDTO;
import com.aizuda.easy.retry.server.retry.task.support.retry.RetryExecutor;
import com.aizuda.easy.retry.template.datasource.access.AccessTemplate;
import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTask;
@ -21,8 +19,6 @@ import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import java.time.LocalDateTime;
/**
*
*
@ -78,9 +74,9 @@ public abstract class AbstractTaskExecutor implements TaskExecutor, Initializing
// retryTaskLog.setTriggerTime(LocalDateTime.now());
// ActorRef actorRef = ActorGenerator.logActor();
LogMetaDTO logMetaDTO = RetryTaskConverter.INSTANCE.toLogMetaDTO(retryTask);
logMetaDTO.setTimestamp(DateUtils.toNowMilli());
EasyRetryLog.REMOTE.error("触发条件不满足 原因: [{}] <|>{}<|>", pair.getValue().toString(), logMetaDTO);
RetryLogMetaDTO retryLogMetaDTO = RetryTaskConverter.INSTANCE.toLogMetaDTO(retryTask);
retryLogMetaDTO.setTimestamp(DateUtils.toNowMilli());
EasyRetryLog.REMOTE.error("触发条件不满足 原因: [{}] <|>{}<|>", pair.getValue().toString(), retryLogMetaDTO);
return false;

View File

@ -0,0 +1,56 @@
package com.aizuda.easy.retry.server.retry.task.support.log;
import akka.actor.ActorRef;
import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.common.log.dto.LogContentDTO;
import com.aizuda.easy.retry.common.log.dto.TaskLogFieldDTO;
import com.aizuda.easy.retry.common.log.enums.LogTypeEnum;
import com.aizuda.easy.retry.server.common.LogStorage;
import com.aizuda.easy.retry.server.common.akka.ActorGenerator;
import com.aizuda.easy.retry.server.common.dto.LogMetaDTO;
import com.aizuda.easy.retry.server.common.log.LogStorageFactory;
import com.aizuda.easy.retry.server.retry.task.dto.RetryLogMetaDTO;
import com.aizuda.easy.retry.server.retry.task.support.dispatch.actor.log.RetryTaskLogDTO;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author: xiaowoniu
* @date : 2024-03-22
* @since : 3.2.0
*/
@Component
public class RetryLogStorage implements LogStorage, InitializingBean {
@Override
public LogTypeEnum logType() {
return LogTypeEnum.JOB;
}
@Override
public void storage(final LogContentDTO logContentDTO, final LogMetaDTO logMetaDTO) {
RetryLogMetaDTO retryLogMetaDTO = (RetryLogMetaDTO) logMetaDTO;
RetryTaskLogDTO jobLogDTO = new RetryTaskLogDTO();
Map<String, String> messageMap = logContentDTO.getFieldList()
.stream()
.filter(logTaskDTO_ -> !Objects.isNull(logTaskDTO_.getValue()))
.collect(Collectors.toMap(TaskLogFieldDTO::getName, TaskLogFieldDTO::getValue));
jobLogDTO.setMessage(JsonUtil.toJsonString(Lists.newArrayList(messageMap)));
jobLogDTO.setGroupName(retryLogMetaDTO.getGroupName());
jobLogDTO.setNamespaceId(retryLogMetaDTO.getNamespaceId());
jobLogDTO.setUniqueId(retryLogMetaDTO.getUniqueId());
jobLogDTO.setRealTime(retryLogMetaDTO.getTimestamp());
ActorRef actorRef = ActorGenerator.jobLogActor();
actorRef.tell(jobLogDTO, actorRef);
}
@Override
public void afterPropertiesSet() throws Exception {
LogStorageFactory.register(logType(), this);
}
}

View File

@ -79,9 +79,7 @@
</appender>
<!-- EasyRetry appender -->
<appender name="easyLogServerAppender" class="com.aizuda.easy.retry.server.job.task.support.appender.EasyRetryServerLogbackAppender">
</appender>
<appender name="easyRetryLogServerAppender" class="com.aizuda.easy.retry.server.retry.task.support.appender.EasyRetryServerLogbackAppender">
<appender name="easyLogServerAppender" class="com.aizuda.easy.retry.server.common.appender.EasyRetryServerLogbackAppender">
</appender>
<!-- 控制台输出日志级别 -->
@ -91,6 +89,5 @@
<appender-ref ref="asyncWarn" />
<appender-ref ref="asyncError" />
<appender-ref ref="easyLogServerAppender" />
<appender-ref ref="easyRetryLogServerAppender" />
</root>
</configuration>