diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/AsyncLuceneAppender.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/AsyncLuceneAppender.java new file mode 100644 index 00000000..32a926a5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/AsyncLuceneAppender.java @@ -0,0 +1,50 @@ +package org.nl.common.lucene; +/** + * @author ldjun + * @version 1.0 + * @date 2023年08月24日 13:00 + * @desc desc + */ + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.classic.spi.LoggingEvent; +import ch.qos.logback.core.AppenderBase; +import com.alibaba.ttl.TransmittableThreadLocal; +import com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender; +import org.apache.commons.lang3.StringUtils; +import org.apache.lucene.analysis.Analyzer; +import org.apache.lucene.document.*; +import org.apache.lucene.index.IndexWriter; +import org.apache.lucene.index.IndexWriterConfig; +import org.apache.lucene.store.Directory; +import org.apache.lucene.store.FSDirectory; +import org.nl.common.domain.Property; +import org.nl.common.utils.YmlConfigFileUtil; +import org.slf4j.MDC; +import org.wltea.analyzer.lucene.IKAnalyzer; + +import java.io.IOException; +import java.nio.file.Paths; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +public class AsyncLuceneAppender extends AspectLogbackAsyncAppender { + + + @Override + protected void append(ILoggingEvent event) { + String traceId = LuceneAppender.traceIdTL.get(); + if (StringUtils.isNotEmpty(traceId)){ + MDC.put("traceId",traceId); + Map mdcPropertyMap = event.getMDCPropertyMap(); + if (mdcPropertyMap.getClass().getName().contains("SynchronizedMap")){ + mdcPropertyMap.put("traceId",traceId); + } + MDC.clear(); + } + super.append(event); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/LuceneAppender.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/LuceneAppender.java index b1f43690..9afb9793 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/LuceneAppender.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/LuceneAppender.java @@ -24,6 +24,7 @@ import org.wltea.analyzer.lucene.IKAnalyzer; import java.io.IOException; import java.nio.file.Paths; import java.util.List; +import java.util.Map; import java.util.Properties; public class LuceneAppender extends AppenderBase { @@ -63,21 +64,16 @@ public class LuceneAppender extends AppenderBase { for (Property property : this.properties.getProperties()) { LucenePropertyAndEncoder encoder = new LucenePropertyAndEncoder(property, this.context); String encode = encoder.encode(event); - if (property.getName().equals("traceId")){ - if (StringUtils.isNotEmpty(encode)){ - LuceneAppender.traceIdTL.set(encode); - }else { - encode = LuceneAppender.traceIdTL.get(); - } - } doc.add(new StringField(property.getName(), encode, Field.Store.YES)); } + Map map = event.getMDCPropertyMap(); + if (!map.isEmpty() && StringUtils.isNotEmpty(map.get("traceId"))){ + doc.add(new StringField("traceId",map.get("traceId"), Field.Store.YES)); + } - doc.add(new StringField("traceId",traceIdTL.get(), Field.Store.YES)); doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, event.getFormattedMessage(), Field.Store.YES)); doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, String.valueOf(event.getTimeStamp()),Field.Store.YES)); doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, event.getTimeStamp())); - try { indexWriter.addDocument(doc); indexWriter.commit(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/Property.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/Property.java new file mode 100644 index 00000000..c4740bb3 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/lucene/Property.java @@ -0,0 +1,44 @@ +package org.nl.common.lucene; + +/* + * @author ZZQ + * @Date 2023/12/26 15:30 + */ +public class Property { + private String name; + private String value; + private boolean allowEmpty; + + public Property() { + } + + public Property(String name, String value, boolean allowEmpty) { + this.name = name; + this.value = value; + this.allowEmpty = allowEmpty; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public boolean isAllowEmpty() { + return allowEmpty; + } + + public void setAllowEmpty(boolean allowEmpty) { + this.allowEmpty = allowEmpty; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java index cfd5e04f..505b8a32 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java @@ -78,9 +78,8 @@ public class LogAspect { String requestIp = StringUtils.getIp(request); MDC.put("requestMethod",url); MDC.put("requestIp", StringUtils.getIp(request)); - MDC.put("traceId",BaseCode.intToChars(IdUtil.getLongId())); MDC.put("requestTime", DateUtil.now()); - + LuceneAppender.traceIdTL.set(BaseCode.intToChars(IdUtil.getLongId())); Object result = null; long comming = System.currentTimeMillis(); try { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/rest/LuceneLogController.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/rest/LuceneLogController.java index 6ee46c81..cd2835c2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/rest/LuceneLogController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/rest/LuceneLogController.java @@ -50,11 +50,14 @@ public class LuceneLogController { //("清空日志") public ResponseEntity thread(@RequestBody LogQuery query) { log.info("线程链路测试"+Thread.currentThread().getName()); + log.error("线程链路测试"+Thread.currentThread().getName()); + luceneLogService.syncdemo(); Thread thread = new Thread(()->{ try { - Thread.sleep(10000); + Thread.sleep(5000); log.info("线程链路测试"+Thread.currentThread().getName()); log.error("线程链路测试"+Thread.currentThread().getName()); + log.info("线程链路测试"+Thread.currentThread().getName()); }catch (Exception ex){ ex.printStackTrace(); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/service/LuceneLogService.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/service/LuceneLogService.java index 7c82b4bc..b7d09daf 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/service/LuceneLogService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/service/LuceneLogService.java @@ -30,4 +30,6 @@ public interface LuceneLogService { * @return */ JSONObject query(LogQuery logQuery); + + void syncdemo(); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/service/impl/LuceneLogServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/service/impl/LuceneLogServiceImpl.java index ff14f8d4..e9ce5654 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/service/impl/LuceneLogServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/logging/service/impl/LuceneLogServiceImpl.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; @@ -26,6 +27,7 @@ import org.nl.modules.logging.service.LuceneLogService; import org.nl.modules.logging.service.dto.LogQuery; import org.nl.modules.logging.service.dto.LogRepositoryDTO; import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.wltea.analyzer.lucene.IKAnalyzer; @@ -34,6 +36,7 @@ import java.nio.file.Paths; import java.util.*; @Service +@Slf4j public class LuceneLogServiceImpl implements LuceneLogService { static String[] INFO_LEVEL = new String[]{"DEBUG","INFO","WARN","ERROR"}; @@ -166,4 +169,14 @@ public class LuceneLogServiceImpl implements LuceneLogService { return res; } + + + @Override + @Async + public void syncdemo() { + log.info("Async线程链路测试"+Thread.currentThread().getName()); + log.error("Async线程链路测试"+Thread.currentThread().getName()); + log.info("Async线程链路测试"+Thread.currentThread().getName()); + log.info("线程链路测试"+Thread.currentThread().getName()); + } } diff --git a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml index 0f3544ac..5d759d3e 100644 --- a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -45,10 +45,6 @@ system lms - - traceId - %X{traceId} - logLevel %level @@ -75,7 +71,7 @@ - + 512 @@ -89,30 +85,9 @@ - + - - - - - - - - - - - - - - - - - - - - -