fix(logging): 优化日志格式及设备产品线校验

- 在日志输出格式中增加方法名和行号,便于定位问题
- 在AdminDeviceService中增加对设备产品线及设备类型字段为空的判断,避免错误处理
- 修正获取CRM-token时抛出异常信息,使错误信息更精准
- 添加调试日志输出响应数据,辅助问题排查
- 对移动破产品线设备的过滤逻辑进行了调整和日志优化
This commit is contained in:
曹鹏飞 2025-12-02 17:34:00 +08:00
parent ce910e28d0
commit c424378f99
6 changed files with 20 additions and 9 deletions

View File

@ -143,7 +143,9 @@ public class AdminDeviceService {
List<TBaseCustomer> agents = customerService.lambdaQuery().select(TBaseCustomer::getAgencyCompanyCode, TBaseCustomer::getAgencyCompanyName).list();
Set<String> deviceNos = new HashSet<>();
crmDeviceList.forEach(u -> {
if (!StrUtil.equals(Constant.MOBILE_BROKEN, u.getProductLine__c())) {
if (StrUtil.isBlank(u.getProductLine__c()) || StrUtil.isBlank(u.getAssetProductLine3__c()) || StrUtil.isBlank(u.getAssetProductLine4__c())) {
log.info("跳过没有产品线或设备类型的设备");
} else if (!StrUtil.equals(Constant.MOBILE_BROKEN, u.getProductLine__c())) {
log.info("跳过非移动破产品线设备,{}", u.getMachine_Number__c());
} else if (StrUtil.isBlank(u.getProductLine5__c())) {
log.error("设备机型为空,{}", JSONUtil.toJsonStr(u));

View File

@ -9,7 +9,8 @@
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度,%logger:显示类名 %msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{10} %msg%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{10} %method:%line %msg%n
</pattern>
</encoder>
</appender>
@ -31,7 +32,8 @@
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%logger:显示类名 %msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{50} %msg%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{30} %method:%line %msg%n
</pattern>
</encoder>
</appender>

View File

@ -9,7 +9,8 @@
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度,%logger:显示类名 %msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{10} %msg%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{10} %method:%line %msg%n
</pattern>
</encoder>
</appender>
@ -31,7 +32,8 @@
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%logger:显示类名 %msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{50} %msg%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{30} %method:%line %msg%n
</pattern>
</encoder>
</appender>

View File

@ -144,7 +144,9 @@ public class AdminDeviceService {
List<TBaseCustomer> agents = customerService.lambdaQuery().select(TBaseCustomer::getAgencyCompanyCode, TBaseCustomer::getAgencyCompanyName).list();
Set<String> deviceNos = new HashSet<>();
crmDeviceList.forEach(u -> {
if (StrUtil.equals(Constant.MOBILE_BROKEN, u.getProductLine__c())) {
if (StrUtil.isBlank(u.getProductLine__c()) || StrUtil.isBlank(u.getAssetProductLine3__c()) || StrUtil.isBlank(u.getAssetProductLine4__c())) {
log.info("跳过没有产品线或设备类型的设备");
} else if (StrUtil.equals(Constant.MOBILE_BROKEN, u.getProductLine__c())) {
log.info("跳过移动破产品线设备,{}", u.getMachine_Number__c());
} else if (StrUtil.isBlank(u.getProductLine5__c())) {
log.error("设备机型为空,{}", JSONUtil.toJsonStr(u));

View File

@ -74,6 +74,7 @@ public class CrmService {
paramMp.put("password", password);
paramMp.put("client_secret", clientSecret);
String s = httpUtils.doformPost(tokenUrl, paramMp);
log.debug("响应数据:" + s);
CrmGetTokenResultDTO result = JSONUtil.toBean(s, CrmGetTokenResultDTO.class);
if (Objects.nonNull(result) && StrUtil.isNotBlank(result.getAccess_token())) {
crmTokenCache.put(tokenCacheKey, result.getAccess_token());
@ -84,7 +85,7 @@ public class CrmService {
return crmTokenCache.get(tokenCacheKey);
} catch (Exception e) {
log.error("获取CRM-token 错误", e);
VUtils.trueThrow(true).throwMessage(STATE.ParamErr, "获取CRM-token 失败:" + e.getMessage());
VUtils.trueThrow(true).throwMessage(STATE.ParamErr, e.getMessage());
}
return "";
}

View File

@ -9,7 +9,8 @@
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度,%logger:显示类名 %msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{10} %msg%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{10} %method:%line %msg%n
</pattern>
</encoder>
</appender>
@ -31,7 +32,8 @@
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%logger:显示类名 %msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{50} %msg%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{30} %method:%line %msg%n
</pattern>
</encoder>
</appender>