From b14042dd68754b7b6d054e9552ea8c897825d120 Mon Sep 17 00:00:00 2001 From: zhangzq Date: Thu, 18 Jun 2026 14:39:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:lucene=E6=97=A5=E5=BF=97=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/common/logging/aspect/LogAspect.java | 9 +- .../controller/MesStructLineController.java | 2 + .../{lucence => log}/LuceneLogController.java | 4 +- .../service/logserver/LogQuery.java | 4 +- .../logserver/LuceneLogServiceImpl.java | 34 +-- .../lucene/AsyncLuceneAppender.java | 4 +- .../service/logserver/lucene/BaseCode.java | 33 +++ .../logserver}/lucene/LogMessageConstant.java | 2 +- .../logserver}/lucene/LuceneAppender.java | 2 +- .../logserver}/lucene/LuceneProperties.java | 2 +- .../lucene/LucenePropertyAndEncoder.java | 2 +- .../service/logserver}/lucene/Property.java | 2 +- .../quartz/task/AutoClearLuceneData.java | 2 +- .../src/main/resources/logback-spring.xml | 4 +- nladmin-ui/src/views/lucene/api/lucene.js | 6 +- nladmin-ui/src/views/lucene/index.vue | 201 +++++++++++++++--- 16 files changed, 247 insertions(+), 66 deletions(-) rename nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/controller/{lucence => log}/LuceneLogController.java (96%) rename nladmin-system/wms-server/src/main/java/org/nl/{config => wms/system_manage/service/logserver}/lucene/AsyncLuceneAppender.java (90%) create mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/BaseCode.java rename nladmin-system/wms-server/src/main/java/org/nl/{config => wms/system_manage/service/logserver}/lucene/LogMessageConstant.java (96%) rename nladmin-system/wms-server/src/main/java/org/nl/{config => wms/system_manage/service/logserver}/lucene/LuceneAppender.java (98%) rename nladmin-system/wms-server/src/main/java/org/nl/{config => wms/system_manage/service/logserver}/lucene/LuceneProperties.java (85%) rename nladmin-system/wms-server/src/main/java/org/nl/{config => wms/system_manage/service/logserver}/lucene/LucenePropertyAndEncoder.java (93%) rename nladmin-system/wms-server/src/main/java/org/nl/{config => wms/system_manage/service/logserver}/lucene/Property.java (93%) diff --git a/nladmin-system/wms-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java b/nladmin-system/wms-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java index c09b2cf..6e7d554 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java @@ -27,7 +27,8 @@ import org.nl.common.utils.IPUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.RequestHolder; import org.nl.common.utils.SecurityUtils; -import org.nl.config.lucene.LuceneAppender; +import org.nl.wms.system_manage.service.logserver.lucene.BaseCode; +import org.nl.wms.system_manage.service.logserver.lucene.LuceneAppender; import org.slf4j.MDC; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestBody; @@ -57,8 +58,8 @@ public class LogAspect { * * @param joinPoint join point for advice */ - @Around("@annotation(logInfo)") - public Object logAround(ProceedingJoinPoint joinPoint,org.nl.common.logging.annotation.Log logInfo) throws Throwable { + @Around("@annotation(logAnno)") + public Object logAround(ProceedingJoinPoint joinPoint,org.nl.common.logging.annotation.Log logAnno) throws Throwable { MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); @@ -69,6 +70,7 @@ public class LogAspect { MDC.put("requestMethod",url); MDC.put("requestIp", requestIp); MDC.put("requestTime", DateUtil.now()); + LuceneAppender.traceIdTL.set(BaseCode.intToChars(IdUtil.getLongId())); Object result = null; long comming = System.currentTimeMillis(); try { @@ -97,6 +99,7 @@ public class LogAspect { }finally { log.info("[--response--][请求接口:{} 执行结束][耗时:{}s]",url,(System.currentTimeMillis() - comming)/1000); MDC.clear(); + LuceneAppender.traceIdTL.remove(); } return result; } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/controller/MesStructLineController.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/controller/MesStructLineController.java index 74ac79f..f25db7b 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/controller/MesStructLineController.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/controller/MesStructLineController.java @@ -4,6 +4,7 @@ package org.nl.wms.ext_manage.controller; import cn.dev33.satoken.annotation.SaIgnore; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; import org.nl.wms.ext_manage.service.dto.StructLineOfflineDTO; import org.nl.wms.ext_manage.service.impl.StructOfflineService; import org.springframework.beans.factory.annotation.Autowired; @@ -33,6 +34,7 @@ public class MesStructLineController { */ @PostMapping("/offline") @SaIgnore + @Log public ResponseEntity confirm(@RequestBody StructLineOfflineDTO structLineOffline) { structOfflineTask.offline(structLineOffline); return new ResponseEntity<>(HttpStatus.OK); diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/controller/lucence/LuceneLogController.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/controller/log/LuceneLogController.java similarity index 96% rename from nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/controller/lucence/LuceneLogController.java rename to nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/controller/log/LuceneLogController.java index 54cc93b..8d3e97c 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/controller/lucence/LuceneLogController.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/controller/log/LuceneLogController.java @@ -1,4 +1,4 @@ -package org.nl.wms.system_manage.controller.lucence; +package org.nl.wms.system_manage.controller.log; import cn.dev33.satoken.annotation.SaIgnore; import lombok.extern.slf4j.Slf4j; @@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.*; */ @RestController -@RequestMapping("/api/esLog") +@RequestMapping("/api/lucene") @Slf4j public class LuceneLogController { diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/LogQuery.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/LogQuery.java index da094e3..9f2be0d 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/LogQuery.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/LogQuery.java @@ -13,8 +13,8 @@ public class LogQuery { /** * 创建时间范围查询 */ - private Date startTime; - private Date endTime; + private String startTime; + private String endTime; /** * 追踪id */ diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogServiceImpl.java index 709d4dc..24f41a2 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.db.PageResult; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.lucene.document.Document; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexWriter; @@ -17,13 +18,15 @@ import org.apache.lucene.search.*; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.BytesRef; import org.nl.common.exception.BadRequestException; -import org.nl.config.lucene.LuceneAppender; +import org.nl.wms.system_manage.service.logserver.lucene.LuceneAppender; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.wltea.analyzer.lucene.IKAnalyzer; import java.nio.file.Paths; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -83,20 +86,27 @@ public class LuceneLogServiceImpl implements LuceneLogService { // 创建排序对象,需要排序字段SortField,参数:字段的名称、字段的类型、是否反转如果是false,升序。true降序 BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder(); //时间范围查询 - Date startDate = logQuery.getStartTime(); - Date endDate = logQuery.getEndTime(); - - if (startDate == null){ - Calendar calendar=Calendar.getInstance(); - calendar.set(1970, 0, 1); - startDate = calendar.getTime(); } - if (endDate == null){ endDate = new DateTime(); } + String startTimeStr = logQuery.getStartTime(); + String endTimeStr = logQuery.getEndTime(); + LocalDateTime startDateTime; + LocalDateTime endDateTime; + if (StringUtils.isEmpty(startTimeStr)) { + startDateTime = LocalDateTime.of(1970, 1, 1, 0, 0, 0); + } else { + startDateTime = LocalDateTime.parse(startTimeStr, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 假设格式 + } + if (StringUtils.isEmpty(endTimeStr)) { + endDateTime = LocalDateTime.now(); + } else { + endDateTime = LocalDateTime.parse(endTimeStr, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + } + String startFormatted = startDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); + String endFormatted = endDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); TermRangeQuery termRangeQuery = new TermRangeQuery( "requestTime", - new BytesRef(DateUtil.format(startDate, "yyyy-MM-dd HH:mm:ss.SSS")), - new BytesRef(DateUtil.format(endDate, "yyyy-MM-dd HH:mm:ss.SSS")), true, true); + new BytesRef(startFormatted), + new BytesRef(endFormatted), true, true); booleanQueryBuilder.add(termRangeQuery,BooleanClause.Occur.MUST); - // 字段之间的与或非关系,MUST表示and,MUST_NOT表示not,SHOULD表示or,有几个fields就必须有几个clauses if (ObjectUtil.isNotEmpty(logQuery.getTraceId())){ TermQuery termQuery = new TermQuery(new Term("traceId", logQuery.getTraceId())); diff --git a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/AsyncLuceneAppender.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/AsyncLuceneAppender.java similarity index 90% rename from nladmin-system/wms-server/src/main/java/org/nl/config/lucene/AsyncLuceneAppender.java rename to nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/AsyncLuceneAppender.java index 1c833b8..6b72617 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/AsyncLuceneAppender.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/AsyncLuceneAppender.java @@ -1,4 +1,4 @@ -package org.nl.config.lucene; +package org.nl.wms.system_manage.service.logserver.lucene; /** * @author ldjun * @version 1.0 @@ -26,7 +26,7 @@ public class AsyncLuceneAppender extends AspectLogbackAsyncAppender { if (mdcPropertyMap.getClass().getName().contains("SynchronizedMap")){ mdcPropertyMap.put("traceId",traceId); } - MDC.clear(); } + super.append(event); } } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/BaseCode.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/BaseCode.java new file mode 100644 index 0000000..e846f41 --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/BaseCode.java @@ -0,0 +1,33 @@ +package org.nl.wms.system_manage.service.logserver.lucene; + +/* + * @author ZZQ + * @Date 2023/2/9 2:54 下午 + */ +public class BaseCode { + + static final char[] MySerials = new char[]{ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', + 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p','q','r','s','t','u','v','w','x','y','z', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q','R','S','T','U','V','W','X','Y','Z'}; + + + public static final String intToChars(long n){ + String s = ""; + if (n == 0) { + s = "0"; + } + while (n != 0) { + int i = (int) (n % MySerials.length); + char c = MySerials[i]; + s = c + s; + n = n / MySerials.length; + } + for (int x = s.length();x<5;x++){ + s="0"+s; + } + return s; + } +} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LogMessageConstant.java similarity index 96% rename from nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java rename to nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LogMessageConstant.java index 14ddcca..2223c45 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LogMessageConstant.java @@ -1,4 +1,4 @@ -package org.nl.config.lucene; +package org.nl.wms.system_manage.service.logserver.lucene; /** * @Author: lyd diff --git a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LuceneAppender.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LuceneAppender.java similarity index 98% rename from nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LuceneAppender.java rename to nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LuceneAppender.java index a4c204a..7de2ecc 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LuceneAppender.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LuceneAppender.java @@ -1,4 +1,4 @@ -package org.nl.config.lucene; +package org.nl.wms.system_manage.service.logserver.lucene; /** * @author ldjun * @version 1.0 diff --git a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LuceneProperties.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LuceneProperties.java similarity index 85% rename from nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LuceneProperties.java rename to nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LuceneProperties.java index c044227..f1987e7 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LuceneProperties.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LuceneProperties.java @@ -1,4 +1,4 @@ -package org.nl.config.lucene; +package org.nl.wms.system_manage.service.logserver.lucene; import java.util.ArrayList; diff --git a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LucenePropertyAndEncoder.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LucenePropertyAndEncoder.java similarity index 93% rename from nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LucenePropertyAndEncoder.java rename to nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LucenePropertyAndEncoder.java index 7ad3ecf..6755337 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/LucenePropertyAndEncoder.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/LucenePropertyAndEncoder.java @@ -1,4 +1,4 @@ -package org.nl.config.lucene; +package org.nl.wms.system_manage.service.logserver.lucene; import ch.qos.logback.classic.PatternLayout; import ch.qos.logback.classic.spi.ILoggingEvent; diff --git a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/Property.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/Property.java similarity index 93% rename from nladmin-system/wms-server/src/main/java/org/nl/config/lucene/Property.java rename to nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/Property.java index 4d33144..edef94f 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/config/lucene/Property.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/logserver/lucene/Property.java @@ -1,4 +1,4 @@ -package org.nl.config.lucene; +package org.nl.wms.system_manage.service.logserver.lucene; /* * @author ZZQ diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/quartz/task/AutoClearLuceneData.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/quartz/task/AutoClearLuceneData.java index 3d74383..e31d35f 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/quartz/task/AutoClearLuceneData.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/system_manage/service/quartz/task/AutoClearLuceneData.java @@ -4,7 +4,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.lucene.document.LongPoint; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.search.Query; -import org.nl.config.lucene.LuceneAppender; +import org.nl.wms.system_manage.service.logserver.lucene.LuceneAppender; import org.nl.wms.system_manage.service.param.ISysParamService; import org.nl.wms.system_manage.service.param.dao.Param; import org.springframework.beans.factory.annotation.Autowired; diff --git a/nladmin-system/wms-server/src/main/resources/logback-spring.xml b/nladmin-system/wms-server/src/main/resources/logback-spring.xml index c949b1a..4b80345 100644 --- a/nladmin-system/wms-server/src/main/resources/logback-spring.xml +++ b/nladmin-system/wms-server/src/main/resources/logback-spring.xml @@ -60,7 +60,7 @@ 500 - + system @@ -92,7 +92,7 @@ - + 512 diff --git a/nladmin-ui/src/views/lucene/api/lucene.js b/nladmin-ui/src/views/lucene/api/lucene.js index 833ccf1..a9ea19b 100644 --- a/nladmin-ui/src/views/lucene/api/lucene.js +++ b/nladmin-ui/src/views/lucene/api/lucene.js @@ -2,7 +2,7 @@ import request from '@/utils/request' export function getLogData(param) { return request({ - url: 'api/lucene/getAll', + url: 'api/lucene/query', method: 'post', data: param }) @@ -16,14 +16,14 @@ export function getTagName() { } export function deleteAllLog() { return request({ - url: 'api/lucene/deleteAllLog', + url: 'api/lucene/clearLogs', method: 'post' }) } export function labelsValues() { return request({ - url: 'api/loki/labels/values', + url: 'api/lucene/labels/values', method: 'get' }) } diff --git a/nladmin-ui/src/views/lucene/index.vue b/nladmin-ui/src/views/lucene/index.vue index d08b9e0..4d9ca72 100644 --- a/nladmin-ui/src/views/lucene/index.vue +++ b/nladmin-ui/src/views/lucene/index.vue @@ -7,24 +7,9 @@ label-width="=100px" label-suffix=":" > - - - - - + + + -
-
-
+
+
+
+ {{ log.requestTime }} + {{ log.logLevel || 'UNKNOWN' }} + IP: {{ log.requestIp }} + {{ log.requestMethod }} + traceId: {{ log.traceId }} + {{ log.thread }} +
+
@@ -120,8 +121,12 @@ export default { logs: [], tagList: [], query: { - tlogTraceId: '', + traceId: '', + requestMethod: '', message: '', + logLevel: '', + startTime: '', + endTime: '', page: 0, size: 100, total: 0, @@ -131,7 +136,7 @@ export default { }, created() { this.queryData() - this.getTagList() + // this.getTagList() }, methods: { handleSizeChange(val) { @@ -142,25 +147,44 @@ export default { this.query.page = val this.queryData() }, - getTagList() { - luceneOperation.getTagName().then(res => { - this.tagList = res - }) + getLevelClass(level) { + const normalizedLevel = (level || '').toUpperCase() + const levelMap = { + ERROR: 'error', + WARN: 'warn', + INFO: 'info', + DEBUG: 'debug' + } + return levelMap[normalizedLevel] || 'default' + }, + formatLogMessage(item, ansi_up) { + const rawMessage = item && typeof item === 'object' + ? item.message || JSON.stringify(item) + : String(item || '') + return { + requestTime: item && item.requestTime, + requestIp: item && item.requestIp, + requestMethod: item && item.requestMethod, + logLevel: item && item.logLevel, + thread: item && item.thread, + traceId: item && item.traceId, + messageHtml: ansi_up.ansi_to_html(rawMessage) + } }, queryData() { - if (this.query.createTime) { + if (this.query.createTime && this.query.createTime.length === 2) { this.query.startTime = this.query.createTime[0] this.query.endTime = this.query.createTime[1] + } else { + this.query.startTime = '' + this.query.endTime = '' } luceneOperation.getLogData(this.query).then(res => { - this.logs = [] // 清空 + this.logs = [] var ansi_up = new AnsiUp() - // 数据初始化 - for (const i in res.content) { - this.logs[i] = ansi_up.ansi_to_html(res.content[i]) - } - // this.logs = res.content - this.query.total = res.totalElements + const page = Array.isArray(res.page) ? res.page : [] + this.logs = page.map(item => this.formatLogMessage(item, ansi_up)) + this.query.total = res.total || 0 }) } } @@ -168,5 +192,114 @@ export default {