rev: 修改部分日志代码

This commit is contained in:
2023-05-07 21:37:44 +08:00
parent 11c1526e83
commit 504b1544cd
6 changed files with 121 additions and 28 deletions

View File

@@ -0,0 +1,49 @@
package org.nl.config.lucene;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.core.rolling.RollingFileAppender;
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.nio.charset.Charset;
public class DynamicLogAppender {
/**
* 通过传入的动态名字,动态设置appender
* @param dynamicName
* @return
*/
public RollingFileAppender getAppender(String oldLogPath,String dynamicName) {
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
RollingFileAppender appender = new RollingFileAppender();
//appender的name属性
appender.setName(dynamicName);
appender.setContext(context);
//设置文件名
appender.setFile(new File(oldLogPath, dynamicName + "\\" + DateUtil.format(new DateTime(),"yyyy-MM-dd")+".log").getAbsolutePath());
//设置日志文件输出格式
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setContext(context);
encoder.setPattern("%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n");
encoder.setCharset(Charset.forName("UTF-8"));
encoder.start();
//设置日志记录器的滚动策略
TimeBasedRollingPolicy policy = new TimeBasedRollingPolicy();
policy.setFileNamePattern(oldLogPath+dynamicName+".%d{yyyy-MM-dd}.log");
policy.setParent(appender); //设置父节点是appender
policy.setContext(context);
policy.start();
//加入下面两个节点
appender.setRollingPolicy(policy);
appender.setEncoder(encoder);
appender.start();
return appender;
}
}

View File

@@ -0,0 +1,35 @@
package org.nl.config.lucene;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.rolling.RollingFileAppender;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;
public class DynamicLogger {
String logPath;//日志存储路径
public DynamicLogger(String logPath) {
this.logPath = logPath;
}
//对外暴露日志对象:每次拿的对象从内存里拿,没有再构建
private static Map<String,Logger> container = new HashMap<>();
public Logger getLogger(String dynamicName) {
Logger logger = container.get(dynamicName);
if(logger != null) {
return logger;
}
logger = build(dynamicName);
container.put(dynamicName,logger);
return logger;
}
//构建Logger对象给Logger指定appender
private Logger build(String dynamicName) {
RollingFileAppender runTaskAppender =new DynamicLogAppender().getAppender(this.logPath,dynamicName);
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
Logger logger = context.getLogger(dynamicName);
logger.addAppender(runTaskAppender);
return logger;
}
}

View File

@@ -26,16 +26,13 @@ public class LuceneIndexWriter {
e.printStackTrace();
}
/**当当前线程结束时自动关闭IndexWriter使用Runtime对象*/
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void run() {
try {
closeIndexWriter();
} catch (Exception e) {
e.printStackTrace();
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
try {
closeIndexWriter();
} catch (Exception e) {
e.printStackTrace();
}
});
}));
}
/**在线程结束时自动关闭IndexWriter*/
public static IndexWriter getIndexWriter() {
@@ -60,6 +57,4 @@ public class LuceneIndexWriter {
timeString = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss.SSS");//格式化后的时间
return timeString;
}
}

View File

@@ -5,20 +5,20 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.lucene.analysis.Analyzer;
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.util.BytesRef;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.wltea.analyzer.lucene.IKAnalyzer;
import org.apache.lucene.util.BytesRef;
import java.nio.file.Paths;
import java.util.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
/**
* lucene查询器
@@ -34,9 +34,9 @@ public class Searcher {
IndexSearcher searcher = new IndexSearcher(reader);
//标准分词器会自动去掉空格啊is a the等单词
// Analyzer analyzer = new StandardAnalyzer();
Analyzer analyzer = new IKAnalyzer(false);
// Analyzer analyzer = new IKAnalyzer(false);
//查询解析器
QueryParser queryParser = new QueryParser("fieldContent", analyzer);
// QueryParser queryParser = new QueryParser("fieldContent", analyzer);
//记录索引开始时间
long startTime = System.currentTimeMillis();
@@ -79,8 +79,16 @@ public class Searcher {
Query termQuery = new TermQuery(new Term("status_code", (String) whereJson.get("status_code")));
booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST);
}
if (whereJson.get("requestparam") != null){
WildcardQuery query = new WildcardQuery(new Term("requestparam", "*"+(String) whereJson.get("requestparam")+"*"));
booleanQueryBuilder.add(query,BooleanClause.Occur.MUST);
}
if (whereJson.get("responseparam") != null){
WildcardQuery query = new WildcardQuery(new Term("responseparam", "*"+(String) whereJson.get("responseparam")+"*"));
booleanQueryBuilder.add(query,BooleanClause.Occur.MUST);
}
if (whereJson.get("blurry") != null) {
Query query = queryParser.parse((String) whereJson.get("blurry"));
WildcardQuery query = new WildcardQuery(new Term("fieldContent", "*"+(String) whereJson.get("blurry")+"*"));
booleanQueryBuilder.add(query, BooleanClause.Occur.MUST);
}
docs = searcher.search(booleanQueryBuilder.build(), end,sort);

View File

@@ -9,13 +9,15 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.nl.common.enums.LogTypeEnum;
import org.nl.config.lucene.DynamicLogger;
import org.nl.config.lucene.LuceneIndexWriter;
import org.nl.system.service.lucene.LuceneExecuteLogService;
import org.nl.system.service.lucene.dto.LuceneLogDto;
import org.slf4j.Logger;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
@@ -30,6 +32,10 @@ import java.io.IOException;
@Slf4j
public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService {
//日志目录
@Value("${logging.file.path}")
private String logPath;
@Override
public void deviceItemValue(String device_code, String key, String value) {
String now = DateUtil.now();
@@ -61,7 +67,7 @@ public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService {
// document.add(new TextField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES));
}
if (ObjectUtil.isNotEmpty(luceneLogDto.getContent())) {
document.add(new TextField("fieldContent", luceneLogDto.getContent(), Field.Store.YES));
document.add(new StringField("fieldContent", luceneLogDto.getContent(), Field.Store.YES));
}
if (ObjectUtil.isNotEmpty(luceneLogDto.getMethod())) {
document.add(new StringField("method", luceneLogDto.getMethod(), Field.Store.YES));
@@ -70,23 +76,24 @@ public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService {
document.add(new StringField("status_code", luceneLogDto.getStatus_code(), Field.Store.YES));
}
if (ObjectUtil.isNotEmpty(luceneLogDto.getRequestparam())) {
document.add(new TextField("requestparam", luceneLogDto.getRequestparam(), Field.Store.YES));
document.add(new StringField("requestparam", luceneLogDto.getRequestparam(), Field.Store.YES));
}
if (ObjectUtil.isNotEmpty(luceneLogDto.getResponseparam())) {
document.add(new TextField("responseparam", luceneLogDto.getResponseparam(), Field.Store.YES));
document.add(new StringField("responseparam", luceneLogDto.getResponseparam(), Field.Store.YES));
}
document.add(new StringField("logType", luceneLogDto.getLogType(), Field.Store.YES));
document.add(new StringField("logTime", DateUtil.format(new DateTime(), "yyyy-MM-dd HH:mm:ss.SSS"), Field.Store.YES));
indexWriter.addDocument(document);
//记录索引结束时间
long endTime = System.currentTimeMillis();
log.info("建立索引共耗时{}毫秒", endTime - startTime);
indexWriter.commit();
MDC.put("DEVICECODE", luceneLogDto.getDevice_code());
//实现日志文件按业务独立生成日志文件到指定路径
DynamicLogger loggerBuilder =new DynamicLogger(logPath+"\\"+luceneLogDto.getLogType()+"\\");
Logger logger = loggerBuilder.getLogger(luceneLogDto.getDevice_code());
// logger.info("设备{}建立索引共耗时{}毫秒",luceneLogDto.getDevice_code(),endTime-startTime);
logger.info("{}",luceneLogDto.toString());
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
// MDC.remove("DEVICECODE");
}
}

View File

@@ -67,7 +67,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Override
public List query(MenuQuery query, PageQuery page) {
luceneExecuteLogService.deviceExecuteLog(LuceneLogDto.builder().log_type("we").device_code("sd").content("saf").build());
if (StringUtils.isNotEmpty(query.getBlurry())){
query.setPid(null);
}