opt:日志优化

This commit is contained in:
zhangzq
2023-12-27 16:47:27 +08:00
parent 68b87a2953
commit ae48f6ce1c
6 changed files with 67 additions and 11 deletions

View File

@@ -8,6 +8,8 @@ package org.nl.common.lucene;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import com.alibaba.ttl.TransmittableThreadLocal;
import org.apache.commons.lang3.StringUtils;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.IndexWriter;
@@ -15,6 +17,7 @@ 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.IdUtil;
import org.nl.common.utils.YmlConfigFileUtil;
import org.wltea.analyzer.lucene.IKAnalyzer;
@@ -24,6 +27,8 @@ import java.util.List;
import java.util.Properties;
public class LuceneAppender extends AppenderBase<ILoggingEvent> {
public static final TransmittableThreadLocal<String> traceIdTL = new TransmittableThreadLocal();
public LuceneProperties properties;
public static Directory index;
private List<LucenePropertyAndEncoder> encoders;
@@ -57,8 +62,18 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
Document doc = new Document();
for (Property property : this.properties.getProperties()) {
LucenePropertyAndEncoder encoder = new LucenePropertyAndEncoder(property, this.context);
doc.add(new StringField(property.getName(), encoder.encode(event), Field.Store.YES));
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));
}
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()));

View File

@@ -27,6 +27,7 @@ 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.nl.common.lucene.LuceneAppender;
import org.nl.common.utils.BaseCode;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
@@ -75,10 +76,9 @@ public class LogAspect {
HttpServletRequest request = RequestHolder.getHttpServletRequest();
String url = request.getRequestURI();
String requestIp = StringUtils.getIp(request);
MDC.put("requestMethod",url);
MDC.put("requestIp", StringUtils.getIp(request));
MDC.put("traceId", BaseCode.intToChars(IdUtil.getLongId()));
MDC.put("traceId",BaseCode.intToChars(IdUtil.getLongId()));
MDC.put("requestTime", DateUtil.now());
Object result = null;
@@ -111,6 +111,7 @@ public class LogAspect {
}finally {
log.info("[--response--][请求接口:{} 执行结束][耗时:{}s]",url,(System.currentTimeMillis() - comming)/1000);
MDC.clear();
LuceneAppender.traceIdTL.remove();
}
return result;
}

View File

@@ -1,5 +1,8 @@
package org.nl.modules.logging.rest;
import cn.dev33.satoken.annotation.SaIgnore;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.anno.Log;
import org.nl.modules.logging.service.LuceneLogService;
import org.nl.modules.logging.service.dto.LogQuery;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/esLog")
@Slf4j
public class LuceneLogController {
@Autowired
@@ -40,4 +44,23 @@ public class LuceneLogController {
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/thread")
@SaIgnore
@Log("线程追踪测试")
//("清空日志")
public ResponseEntity<Object> thread(@RequestBody LogQuery query) {
log.info("线程链路测试"+Thread.currentThread().getName());
Thread thread = new Thread(()->{
try {
Thread.sleep(10000);
log.info("线程链路测试"+Thread.currentThread().getName());
log.error("线程链路测试"+Thread.currentThread().getName());
}catch (Exception ex){
ex.printStackTrace();
}
});
thread.start();
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -1,5 +1,6 @@
package org.nl.modules.logging.service.impl;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -11,10 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.*;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
@@ -22,6 +20,8 @@ import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.BytesRef;
import org.nl.common.lucene.LogMessageConstant;
import org.nl.common.lucene.LuceneAppender;
import org.nl.common.utils.YmlConfigFileUtil;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.logging.service.LuceneLogService;
import org.nl.modules.logging.service.dto.LogQuery;
import org.nl.modules.logging.service.dto.LogRepositoryDTO;
@@ -43,12 +43,29 @@ public class LuceneLogServiceImpl implements LuceneLogService {
@Override
public void clearLogs(LogQuery query) {
try {
// 初始化 Lucene 索引
Analyzer analyzer = new IKAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter indexWriter = new IndexWriter(FSDirectory.open(Paths.get(indexUrl)), config);
if (indexWriter != null){
BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder();
DateTime offset = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -10);
TermRangeQuery termRangeQuery = new TermRangeQuery(
"requestTime",null,
new BytesRef(DateUtil.format(offset, "yyyy-MM-dd HH:mm:ss.SSS")), true, true);
booleanQueryBuilder.add(termRangeQuery,BooleanClause.Occur.MUST);
indexWriter.deleteDocuments(termRangeQuery);
indexWriter.commit();
indexWriter.close();
}
}catch (Exception ex){
throw new BadRequestException("删除失败:"+ex.getMessage());
}
}
@Override
public JSONArray getLabelsValues(String type) {
JSONArray result = new JSONArray();
for (String v : INFO_LEVEL) {
JSONObject item = new JSONObject();

View File

@@ -184,4 +184,4 @@ es:
schedulerFile: /Users/mima0000/Desktop/scheduler.xml
lucene:
index:
path: /Users/mima0000/Desktop/index
path: E:\lms\lucene\index

View File

@@ -88,7 +88,7 @@
</springProfile>
<springProfile name="dev3">
<root level="DEBUG">
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncLuceneAppender"/>
</root>