rev: 修改部分日志代码
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,16 +26,13 @@ public class LuceneIndexWriter {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
/**当当前线程结束时,自动关闭IndexWriter,使用Runtime对象*/
|
/**当当前线程结束时,自动关闭IndexWriter,使用Runtime对象*/
|
||||||
Runtime.getRuntime().addShutdownHook(new Thread(){
|
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||||
@Override
|
try {
|
||||||
public void run() {
|
closeIndexWriter();
|
||||||
try {
|
} catch (Exception e) {
|
||||||
closeIndexWriter();
|
e.printStackTrace();
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
}));
|
||||||
}
|
}
|
||||||
/**在线程结束时,自动关闭IndexWriter*/
|
/**在线程结束时,自动关闭IndexWriter*/
|
||||||
public static IndexWriter getIndexWriter() {
|
public static IndexWriter getIndexWriter() {
|
||||||
@@ -60,6 +57,4 @@ public class LuceneIndexWriter {
|
|||||||
timeString = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss.SSS");//格式化后的时间
|
timeString = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss.SSS");//格式化后的时间
|
||||||
return timeString;
|
return timeString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,20 +5,20 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.lucene.analysis.Analyzer;
|
|
||||||
import org.apache.lucene.document.Document;
|
import org.apache.lucene.document.Document;
|
||||||
import org.apache.lucene.index.DirectoryReader;
|
import org.apache.lucene.index.DirectoryReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
import org.apache.lucene.index.Term;
|
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.search.*;
|
||||||
import org.apache.lucene.store.Directory;
|
import org.apache.lucene.store.Directory;
|
||||||
import org.apache.lucene.store.FSDirectory;
|
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.nio.file.Paths;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lucene查询器
|
* lucene查询器
|
||||||
@@ -34,9 +34,9 @@ public class Searcher {
|
|||||||
IndexSearcher searcher = new IndexSearcher(reader);
|
IndexSearcher searcher = new IndexSearcher(reader);
|
||||||
//标准分词器,会自动去掉空格啊,is a the等单词
|
//标准分词器,会自动去掉空格啊,is a the等单词
|
||||||
// Analyzer analyzer = new StandardAnalyzer();
|
// 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();
|
long startTime = System.currentTimeMillis();
|
||||||
@@ -79,8 +79,16 @@ public class Searcher {
|
|||||||
Query termQuery = new TermQuery(new Term("status_code", (String) whereJson.get("status_code")));
|
Query termQuery = new TermQuery(new Term("status_code", (String) whereJson.get("status_code")));
|
||||||
booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST);
|
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) {
|
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);
|
booleanQueryBuilder.add(query, BooleanClause.Occur.MUST);
|
||||||
}
|
}
|
||||||
docs = searcher.search(booleanQueryBuilder.build(), end,sort);
|
docs = searcher.search(booleanQueryBuilder.build(), end,sort);
|
||||||
|
|||||||
@@ -9,13 +9,15 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.apache.lucene.document.Document;
|
import org.apache.lucene.document.Document;
|
||||||
import org.apache.lucene.document.Field;
|
import org.apache.lucene.document.Field;
|
||||||
import org.apache.lucene.document.StringField;
|
import org.apache.lucene.document.StringField;
|
||||||
import org.apache.lucene.document.TextField;
|
|
||||||
import org.apache.lucene.index.IndexWriter;
|
import org.apache.lucene.index.IndexWriter;
|
||||||
import org.nl.common.enums.LogTypeEnum;
|
import org.nl.common.enums.LogTypeEnum;
|
||||||
|
import org.nl.config.lucene.DynamicLogger;
|
||||||
import org.nl.config.lucene.LuceneIndexWriter;
|
import org.nl.config.lucene.LuceneIndexWriter;
|
||||||
import org.nl.system.service.lucene.LuceneExecuteLogService;
|
import org.nl.system.service.lucene.LuceneExecuteLogService;
|
||||||
import org.nl.system.service.lucene.dto.LuceneLogDto;
|
import org.nl.system.service.lucene.dto.LuceneLogDto;
|
||||||
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.MDC;
|
import org.slf4j.MDC;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -30,6 +32,10 @@ import java.io.IOException;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService {
|
public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService {
|
||||||
|
|
||||||
|
//日志目录
|
||||||
|
@Value("${logging.file.path}")
|
||||||
|
private String logPath;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deviceItemValue(String device_code, String key, String value) {
|
public void deviceItemValue(String device_code, String key, String value) {
|
||||||
String now = DateUtil.now();
|
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));
|
// document.add(new TextField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES));
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(luceneLogDto.getContent())) {
|
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())) {
|
if (ObjectUtil.isNotEmpty(luceneLogDto.getMethod())) {
|
||||||
document.add(new StringField("method", luceneLogDto.getMethod(), Field.Store.YES));
|
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));
|
document.add(new StringField("status_code", luceneLogDto.getStatus_code(), Field.Store.YES));
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(luceneLogDto.getRequestparam())) {
|
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())) {
|
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("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));
|
document.add(new StringField("logTime", DateUtil.format(new DateTime(), "yyyy-MM-dd HH:mm:ss.SSS"), Field.Store.YES));
|
||||||
indexWriter.addDocument(document);
|
indexWriter.addDocument(document);
|
||||||
//记录索引结束时间
|
//记录索引结束时间
|
||||||
long endTime = System.currentTimeMillis();
|
long endTime = System.currentTimeMillis();
|
||||||
log.info("建立索引共耗时{}毫秒", endTime - startTime);
|
|
||||||
indexWriter.commit();
|
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) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
} finally {
|
|
||||||
// MDC.remove("DEVICECODE");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List query(MenuQuery query, PageQuery page) {
|
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())){
|
if (StringUtils.isNotEmpty(query.getBlurry())){
|
||||||
query.setPid(null);
|
query.setPid(null);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user