From ef6b8a07cfb60b05f19a9610572a9a00129cb888 Mon Sep 17 00:00:00 2001 From: ludj Date: Mon, 15 May 2023 18:28:48 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E4=BB=A3=E7=A0=81=E6=95=B4=E4=BD=93?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lms/nladmin-system/pom.xml | 13 +- .../nl/modules/loki/rest/LokiController.java | 40 ------- .../nl/modules/loki/service/LokiService.java | 25 ---- .../loki/service/impl/LokiServiceImpl.java | 113 ------------------ .../wms/ext/acs/service/AcsToWmsService.java | 7 ++ .../acs/service/impl/AcsToWmsServiceImpl.java | 58 +++++---- .../src/main/java/org/nl/wms/log/LokiLog.java | 15 --- .../java/org/nl/wms/log/LokiLogAspect.java | 63 ---------- .../main/java/org/nl/wms/log/LokiLogType.java | 25 ---- .../src/main/java/org/nl/wms/wms.xls | Bin 272896 -> 272896 bytes .../main/resources/config/application-dev.yml | 22 ++-- .../resources/config/application-prod.yml | 16 ++- .../resources/config/application-test.yml | 4 - .../src/main/resources/config/application.yml | 2 +- .../src/main/resources/logback-spring.xml | 50 +++----- 15 files changed, 90 insertions(+), 363 deletions(-) delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLog.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogAspect.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java diff --git a/lms/nladmin-system/pom.xml b/lms/nladmin-system/pom.xml index ec40204..c86e1cf 100644 --- a/lms/nladmin-system/pom.xml +++ b/lms/nladmin-system/pom.xml @@ -242,6 +242,12 @@ spring-boot-starter-data-redis + + org.redisson + redisson-spring-boot-starter + 3.16.4 + + com.hynnet @@ -349,13 +355,6 @@ 5.0.1 - - - - com.github.loki4j - loki-logback-appender-jdk8 - 1.3.2 - org.apache.httpcomponents httpclient diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java b/lms/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java deleted file mode 100644 index e498cb6..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/loki/rest/LokiController.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.nl.modules.loki.rest; - -import com.alibaba.fastjson.JSONObject; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.modules.common.annotation.RateLimiter; -import org.nl.modules.loki.service.LokiService; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -/** - * @Author: lyd - * @Description: 日志监控 - * @Date: 2022-08-15 - */ -@RestController -@RequiredArgsConstructor -@Api(tags = "日志监控") -@RequestMapping("/api/loki") -@Slf4j -public class LokiController { - - private final LokiService lokiService; - - @GetMapping("/labels/values") - @ApiOperation("获取标签") - public ResponseEntity labelsValues() { - return new ResponseEntity<>(lokiService.getLabelsValues(), HttpStatus.OK); - } - - @PostMapping("/logs") - @ApiOperation("获取日志") - @RateLimiter(value = 1, timeout = 300) // 限流 - public ResponseEntity getLogData(@RequestBody JSONObject json) { - return new ResponseEntity<>(lokiService.getLogData(json), HttpStatus.OK); - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java b/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java deleted file mode 100644 index 10101c9..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/LokiService.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.nl.modules.loki.service; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; - -/** - * @Author: lyd - * @Description: 服务类 - * @Date: 2022-08-15 - */ -public interface LokiService { - - /** - * 获取日志信息 - * @param json - * @return - */ - JSONObject getLogData(JSONObject json); - - /** - * 获取labels和values树 - * @return - */ - JSONArray getLabelsValues(); -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java deleted file mode 100644 index f6eeb49..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.nl.modules.loki.service.impl; - -import cn.hutool.core.util.CharsetUtil; -import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import org.nl.modules.loki.service.LokiService; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -/** - * @Author: lyd - * @Description: 实现类 - * @Date: 2022-08-15 - */ -@Service -@RequiredArgsConstructor -public class LokiServiceImpl implements LokiService { - - @Value("${loki.url}") - private String lokiUrl; - - @Value("${loki.systemName}") - private String systemName; - - @Override - public JSONObject getLogData(JSONObject json) { - String logLabel = ""; - String logLabelValue = ""; - Long start = 0L; - Long end = 0L; - String text = ""; - String limit = "100"; - String direction = "backward"; - if (json.get("logLabel") != null) logLabel = json.getString("logLabel"); - if (json.get("logLabelValue") != null) logLabelValue = json.getString("logLabelValue"); - if (json.get("text") != null) text = json.getString("text"); - if (json.get("start") != null) start = json.getLong("start"); - if (json.get("end") != null) end = json.getLong("end"); - if (json.get("limits") != null) limit = json.getString("limits"); - if (json.get("direction") != null) direction = json.getString("direction"); - /** - * 组织参数 - * 纳秒数 - * 1660037391880000000 - * 1641453208415000000 - * http://localhost:3100/loki/api/v1/query_range?query={host="localhost"} |= ``&limit=1500&start=1641453208415000000&end=1660027623419419002 - */ - JSONObject parse = null; - String query = lokiUrl + "/query_range?query={system=\"" + systemName + "\", " + logLabel + "=\"" + logLabelValue + "\"} |= `" + text + "`"; - String result = ""; - if (start==0L) { - result = HttpUtil.get(query + "&limit=" + limit + "&direction=" + direction, CharsetUtil.CHARSET_UTF_8); - } else { - result = HttpUtil.get(query + "&limit=" + limit + "&start=" + start + "&end=" + end + "&direction=" + direction, CharsetUtil.CHARSET_UTF_8); - } - try { - parse = (JSONObject) JSONObject.parse(result); - } catch (Exception e) { -// reslut的值可能为:too many outstanding requests,无法转化成Json - System.out.println("reslut:" + result); -// e.printStackTrace(); - } - return parse; - } - - /** - * 获取labels和values树 - * - * @return - */ - @Override - public JSONArray getLabelsValues() { - /** - * [{ - * label: - * value: - * children:[{ - * label - * value - * }] - * }] - */ - JSONArray result = new JSONArray(); - // 获取所有标签 - String labelString = HttpUtil.get(lokiUrl + "/labels", CharsetUtil.CHARSET_UTF_8); - JSONObject parse = (JSONObject) JSONObject.parse(labelString); - JSONArray labels = parse.getJSONArray("data"); - for (int i=0; iLMS服务端 * 任务申请 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index bcd8ccd..d319b1d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -4,12 +4,11 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.RedisUtils; @@ -22,25 +21,21 @@ import org.nl.wms.basedata.service.VehicleService; import org.nl.wms.basedata.service.dto.MaterialbaseDto; import org.nl.wms.basedata.service.dto.VehicleDto; import org.nl.wms.ext.acs.service.AcsToWmsService; -import org.nl.wms.log.LokiLog; -import org.nl.wms.log.LokiLogType; -import org.nl.wms.pda.scanGroup.HcwNumEnum; import org.nl.wms.pda.scanGroup.KlzhcwUtil; -import org.nl.wms.pda.scanGroup.MyLinkedListService; import org.nl.wms.pdm.service.DeviceService; import org.nl.wms.pdm.service.WorkordeService; -import org.nl.wms.pdm.service.dto.DeviceDto; import org.nl.wms.pdm.service.dto.WorkorderDto; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.TaskService; -import org.nl.wms.sch.tasks.RegionTypeEnum; import org.nl.wms.sch.tasks.callEmpty.HnjCallEmpVehicleTask; -import org.nl.wms.sch.tasks.sendEmpty.KzdjwSendEmpVehicleTask; import org.nl.wms.sch.tasks.callMaterial.YljCallMaterialTask; +import org.nl.wms.sch.tasks.sendEmpty.KzdjwSendEmpVehicleTask; import org.nl.wms.sch.tasks.sendMaterial.HnjSendMaterialTask; import org.nl.wms.st.structivt.service.StructivtService; import org.nl.wms.st.structivt.service.dto.StructivtDto; -import org.springframework.http.HttpStatus; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -48,8 +43,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.math.BigDecimal; -import java.util.LinkedList; import java.util.Map; +import java.util.concurrent.TimeUnit; @Service @RequiredArgsConstructor @@ -65,6 +60,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final RedisUtils redisUtils; private final ParamService paramService; + @Autowired + private RedissonClient redissonClient; + @Autowired + private AcsToWmsService acsToWmsService; + /** * task_id:任务标识 * task_code:任务编码 @@ -73,7 +73,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * @param string 条件 * @returnzss */ - @LokiLog(type = LokiLogType.ACS_TO_LMS) @Override public Map receiveTaskStatusAcs(String string) { JSONArray array = JSONArray.parseArray(string); @@ -180,10 +179,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { param.put("workorder_qty", jsonObject1.getString("plan_qty")); param.put("device_code", deviceService.findByCode(jsonObject1.getString("device_code")).getExtend_code()); String workorder_uri = paramService.findByCode("mes_url").getValue() + "api/mes/materialIvt"; - HttpRequest - .post(workorder_uri) - .body(param.toJSONString()) - .execute(); + HttpRequest.post(workorder_uri).body(param.toJSONString()).execute(); } } catch (Exception e) { status = "400"; @@ -196,7 +192,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return resp; } - @LokiLog(type = LokiLogType.ACS_TO_LMS) + @Override public String againApply(String task_id) { log.info("输入参数:" + task_id); @@ -220,13 +216,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return point_code; } - @LokiLog(type = LokiLogType.ACS_TO_LMS) + @Override public Map receivePointStatusFromAcs(Map jsonObject) { return null; } - @LokiLog(type = LokiLogType.ACS_TO_LMS) + @Override public Map orderFinish(String string) { JSONObject orderJson = JSONObject.parseObject(string); @@ -249,10 +245,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } - @LokiLog(type = LokiLogType.ACS_TO_LMS) + + @Override + @SneakyThrows + public JSONObject apply(JSONObject jsonObject) { + String type = (String) jsonObject.get("type"); + RLock lock = redissonClient.getLock("acs_to_wms:" + type); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + return acsToWmsService.transApply(jsonObject); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } + + return null; + } + + @Override @Transactional(rollbackFor = Exception.class) - public JSONObject apply(JSONObject whereJson) { + public JSONObject transApply(JSONObject whereJson) { JSONObject resp = new JSONObject(); String type = whereJson.getString("type"); String point_code = whereJson.getString("device_code"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLog.java b/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLog.java deleted file mode 100644 index 890d7d8..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLog.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.nl.wms.log; - -import java.lang.annotation.*; - -/** - * @author: lyd - * @description: 自定义日志注解,用作LOKI日志分类 - * @Date: 2022/10/10 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.METHOD}) -@Documented -public @interface LokiLog { - LokiLogType type() default LokiLogType.DEFAULT; -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogAspect.java b/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogAspect.java deleted file mode 100644 index f12ac3a..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogAspect.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.nl.wms.log; - -import com.alibaba.fastjson.JSONObject; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.Signature; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.aspectj.lang.reflect.MethodSignature; -import org.slf4j.MDC; -import org.springframework.stereotype.Component; - -import java.lang.reflect.Method; - - -/** - * @author: lyd - * @description: 自定义日志切面:https://cloud.tencent.com/developer/article/1655923 - * @Date: 2022/10/10 - */ -@Aspect -@Slf4j -@Component -public class LokiLogAspect { - /** - * 切到所有OperatorLog注解修饰的方法 - */ - @Pointcut("@annotation(org.nl.wms.log.LokiLog)") - public void operatorLog() { - // 空方法 - } - - /** - * 利用@Around环绕增强 - * - * @return - */ - @Around("operatorLog()") - public synchronized Object around(ProceedingJoinPoint pjp) throws Throwable { -// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); -// HttpServletRequest request = attributes.getRequest(); -// HttpServletResponse response = attributes.getResponse(); - - Signature signature = pjp.getSignature(); - MethodSignature methodSignature = (MethodSignature) signature; - Method method = methodSignature.getMethod(); - LokiLog lokiLog = method.getAnnotation(LokiLog.class); - - // 获取描述信息 - LokiLogType logType = lokiLog.type(); - - MDC.put("log_file_type", logType.getDesc()); - log.info("输入参数:" + JSONObject.toJSONString(pjp.getArgs())); - - Object proceed = pjp.proceed(); - - log.info("返回参数:" + JSONObject.toJSONString(proceed)); - MDC.remove("log_file_type"); - return proceed; - - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java b/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java deleted file mode 100644 index ec2ed3e..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.nl.wms.log; - -/** - * @author: lyd - * @description: - * @Date: 2022/10/11 - */ -public enum LokiLogType { - DEFAULT("默认"), - LMS_TO_MES("LMS请求MES"), - MES_TO_LMS("MES请求LMS"), - LMS_TO_ACS("LMS请求ACS"), - ACS_TO_LMS("ACS请求LMS"); - - private String desc; - - LokiLogType(String desc) { - this.desc=desc; - } - - public String getDesc() { - return desc; - } - -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls index d1c98a4dd83148f407e3bc2d5b73ea3316719299..cbfc0f4decd4a8c32309574bb414301b6a7abd67 100644 GIT binary patch delta 58 zcmZp;BG7O}U_%ZI+k*8UIE33b7qM((=cv$ diff --git a/lms/nladmin-system/src/main/resources/config/application-dev.yml b/lms/nladmin-system/src/main/resources/config/application-dev.yml index b099e46..4189852 100644 --- a/lms/nladmin-system/src/main/resources/config/application-dev.yml +++ b/lms/nladmin-system/src/main/resources/config/application-dev.yml @@ -6,11 +6,9 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy -# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:yongyu_lms2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:hongfeng_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:hf_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} - #password: ${DB_PWD:P@ssw0rd} - password: ${DB_PWD:password} + password: ${DB_PWD:P@ssw0rd} # 初始连接数 initial-size: 5 # 最小连接数 @@ -57,7 +55,16 @@ redis: database: ${REDIS_DB:15} host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} - password: ${REDIS_PWD:} + redisson: + config: | + threads: 4 + nettyThreads: 4 + singleServerConfig: + connectionMinimumIdleSize: 8 + connectionPoolSize: 8 + address: redis://127.0.0.1:6379 + idleConnectionTimeout: 10000 + timeout: 3000 # 登录相关配置 login: @@ -150,7 +157,4 @@ sa-token: jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq # token 前缀 token-prefix: Bearer - -loki: - url: http://localhost:3100/loki/api/v1 - systemName: acs + is-print: false diff --git a/lms/nladmin-system/src/main/resources/config/application-prod.yml b/lms/nladmin-system/src/main/resources/config/application-prod.yml index 7ff67a3..32d5f79 100644 --- a/lms/nladmin-system/src/main/resources/config/application-prod.yml +++ b/lms/nladmin-system/src/main/resources/config/application-prod.yml @@ -57,7 +57,16 @@ redis: database: ${REDIS_DB:15} host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} - password: ${REDIS_PWD:} + redisson: + config: | + threads: 4 + nettyThreads: 4 + singleServerConfig: + connectionMinimumIdleSize: 8 + connectionPoolSize: 8 + address: redis://127.0.0.1:6379 + idleConnectionTimeout: 10000 + timeout: 3000 # 登录相关配置 login: @@ -150,7 +159,4 @@ sa-token: jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq # token 前缀 token-prefix: Bearer - -loki: - url: http://localhost:3100/loki/api/v1 - systemName: lms + is-print: false diff --git a/lms/nladmin-system/src/main/resources/config/application-test.yml b/lms/nladmin-system/src/main/resources/config/application-test.yml index 37e02e9..6949b7d 100644 --- a/lms/nladmin-system/src/main/resources/config/application-test.yml +++ b/lms/nladmin-system/src/main/resources/config/application-test.yml @@ -150,7 +150,3 @@ sa-token: jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq # token 前缀 token-prefix: Bearer - -loki: - url: http://localhost:3100/loki/api/v1 - systemName: lms diff --git a/lms/nladmin-system/src/main/resources/config/application.yml b/lms/nladmin-system/src/main/resources/config/application.yml index a4d00ab..7e3fbea 100644 --- a/lms/nladmin-system/src/main/resources/config/application.yml +++ b/lms/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: prod + active: dev jackson: time-zone: GMT+8 data: diff --git a/lms/nladmin-system/src/main/resources/logback-spring.xml b/lms/nladmin-system/src/main/resources/logback-spring.xml index 5eaf0bd..d940bef 100644 --- a/lms/nladmin-system/src/main/resources/logback-spring.xml +++ b/lms/nladmin-system/src/main/resources/logback-spring.xml @@ -14,9 +14,6 @@ https://juejin.cn/post/6844903775631572999 - - - @@ -26,7 +23,7 @@ https://juejin.cn/post/6844903775631572999 ${log.pattern} - ${log.charset} + @@ -47,6 +44,7 @@ https://juejin.cn/post/6844903775631572999 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} @@ -58,28 +56,10 @@ https://juejin.cn/post/6844903775631572999 - - - 1000 - - ${LOKI_URL}/push - - - - - ${log.pattern} - - true - - - - @@ -124,55 +104,55 @@ https://juejin.cn/post/6844903775631572999 - + - + - + - + - + - + - + - + - + - + - + - + - +