1. 限制记录 api 日志的字段长度
2. 完整记录所有的 databus api 的请求日志 3. 新增 iwork 同步可以按 id 维度进行 4. 新增自动扫描 BusinessBaseDO 的 公司部门数据权限模式
This commit is contained in:
@@ -3,6 +3,7 @@ package com.zt.plat.module.infra.service.logger;
|
||||
import com.zt.plat.framework.common.biz.infra.logger.dto.ApiErrorLogCreateReqDTO;
|
||||
import com.zt.plat.framework.common.enums.UserTypeEnum;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.string.StrUtils;
|
||||
import com.zt.plat.framework.test.core.ut.BaseDbUnitTest;
|
||||
import com.zt.plat.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO;
|
||||
import com.zt.plat.module.infra.dal.dataobject.logger.ApiErrorLogDO;
|
||||
@@ -13,6 +14,7 @@ import org.springframework.context.annotation.Import;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.hutool.core.util.RandomUtil.randomEle;
|
||||
@@ -79,15 +81,63 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest {
|
||||
|
||||
@Test
|
||||
public void testCreateApiErrorLog() {
|
||||
// 准备参数
|
||||
ApiErrorLogCreateReqDTO createDTO = randomPojo(ApiErrorLogCreateReqDTO.class);
|
||||
// 准备参数:手动设置多个超长字段,确保持久化前会被截断
|
||||
ApiErrorLogCreateReqDTO createDTO = new ApiErrorLogCreateReqDTO();
|
||||
createDTO.setTraceId(repeat('t', ApiErrorLogDO.TRACE_ID_MAX_LENGTH + 20));
|
||||
createDTO.setUserId(10086L);
|
||||
createDTO.setUserType(UserTypeEnum.ADMIN.getValue());
|
||||
createDTO.setApplicationName(repeat('a', ApiErrorLogDO.APPLICATION_NAME_MAX_LENGTH + 5));
|
||||
createDTO.setRequestMethod(repeat('b', ApiErrorLogDO.REQUEST_METHOD_MAX_LENGTH + 10));
|
||||
createDTO.setRequestUrl(repeat('c', ApiErrorLogDO.REQUEST_URL_MAX_LENGTH + 20));
|
||||
createDTO.setRequestParams(repeat('d', ApiErrorLogDO.REQUEST_PARAMS_MAX_LENGTH + 50));
|
||||
createDTO.setUserIp(repeat('1', ApiErrorLogDO.USER_IP_MAX_LENGTH + 10));
|
||||
createDTO.setUserAgent(repeat('e', ApiErrorLogDO.USER_AGENT_MAX_LENGTH + 100));
|
||||
createDTO.setExceptionTime(LocalDateTime.of(2025, 1, 1, 10, 20, 30));
|
||||
createDTO.setExceptionName(repeat('f', ApiErrorLogDO.EXCEPTION_NAME_MAX_LENGTH + 10));
|
||||
createDTO.setExceptionClassName(repeat('g', ApiErrorLogDO.EXCEPTION_CLASS_NAME_MAX_LENGTH + 10));
|
||||
createDTO.setExceptionFileName(repeat('h', ApiErrorLogDO.EXCEPTION_FILE_NAME_MAX_LENGTH + 10));
|
||||
createDTO.setExceptionMethodName(repeat('i', ApiErrorLogDO.EXCEPTION_METHOD_NAME_MAX_LENGTH + 10));
|
||||
createDTO.setExceptionLineNumber(256);
|
||||
createDTO.setExceptionStackTrace(repeat('s', ApiErrorLogDO.EXCEPTION_STACK_TRACE_MAX_LENGTH + 100));
|
||||
createDTO.setExceptionRootCauseMessage(repeat('r', ApiErrorLogDO.EXCEPTION_ROOT_CAUSE_MESSAGE_MAX_LENGTH + 80));
|
||||
createDTO.setExceptionMessage(repeat('m', ApiErrorLogDO.EXCEPTION_MESSAGE_MAX_LENGTH + 60));
|
||||
|
||||
// 调用
|
||||
apiErrorLogService.createApiErrorLog(createDTO);
|
||||
// 断言
|
||||
ApiErrorLogDO apiErrorLogDO = apiErrorLogMapper.selectOne(null);
|
||||
assertPojoEquals(createDTO, apiErrorLogDO);
|
||||
assertEquals(createDTO.getUserId(), apiErrorLogDO.getUserId());
|
||||
assertEquals(createDTO.getUserType(), apiErrorLogDO.getUserType());
|
||||
assertEquals(createDTO.getExceptionTime(), apiErrorLogDO.getExceptionTime());
|
||||
assertEquals(createDTO.getExceptionLineNumber(), apiErrorLogDO.getExceptionLineNumber());
|
||||
assertEquals(ApiErrorLogProcessStatusEnum.INIT.getStatus(), apiErrorLogDO.getProcessStatus());
|
||||
|
||||
assertTruncated(createDTO.getTraceId(), apiErrorLogDO.getTraceId(), ApiErrorLogDO.TRACE_ID_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getApplicationName(), apiErrorLogDO.getApplicationName(),
|
||||
ApiErrorLogDO.APPLICATION_NAME_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getRequestMethod(), apiErrorLogDO.getRequestMethod(),
|
||||
ApiErrorLogDO.REQUEST_METHOD_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getRequestUrl(), apiErrorLogDO.getRequestUrl(),
|
||||
ApiErrorLogDO.REQUEST_URL_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getRequestParams(), apiErrorLogDO.getRequestParams(),
|
||||
ApiErrorLogDO.REQUEST_PARAMS_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getUserIp(), apiErrorLogDO.getUserIp(), ApiErrorLogDO.USER_IP_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getUserAgent(), apiErrorLogDO.getUserAgent(),
|
||||
ApiErrorLogDO.USER_AGENT_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getExceptionName(), apiErrorLogDO.getExceptionName(),
|
||||
ApiErrorLogDO.EXCEPTION_NAME_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getExceptionClassName(), apiErrorLogDO.getExceptionClassName(),
|
||||
ApiErrorLogDO.EXCEPTION_CLASS_NAME_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getExceptionFileName(), apiErrorLogDO.getExceptionFileName(),
|
||||
ApiErrorLogDO.EXCEPTION_FILE_NAME_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getExceptionMethodName(), apiErrorLogDO.getExceptionMethodName(),
|
||||
ApiErrorLogDO.EXCEPTION_METHOD_NAME_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getExceptionStackTrace(), apiErrorLogDO.getExceptionStackTrace(),
|
||||
ApiErrorLogDO.EXCEPTION_STACK_TRACE_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getExceptionRootCauseMessage(), apiErrorLogDO.getExceptionRootCauseMessage(),
|
||||
ApiErrorLogDO.EXCEPTION_ROOT_CAUSE_MESSAGE_MAX_LENGTH);
|
||||
assertTruncated(createDTO.getExceptionMessage(), apiErrorLogDO.getExceptionMessage(),
|
||||
ApiErrorLogDO.EXCEPTION_MESSAGE_MAX_LENGTH);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -161,4 +211,12 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest {
|
||||
assertPojoEquals(log02, logs.get(0), "createTime", "updateTime");
|
||||
}
|
||||
|
||||
private static void assertTruncated(String source, String actual, int maxLength) {
|
||||
assertEquals(StrUtils.maxLength(source, maxLength), actual);
|
||||
}
|
||||
|
||||
private static String repeat(char ch, int length) {
|
||||
return String.valueOf(ch).repeat(Math.max(length, 0));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user