opt:日志优化
This commit is contained in:
@@ -45,19 +45,50 @@
|
|||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- logback appender日志-->
|
<!-- logback appender日志-->
|
||||||
|
<!-- Lucence核心包 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.internetitem</groupId>
|
<groupId>com.yomahub</groupId>
|
||||||
<artifactId>logback-elasticsearch-appender</artifactId>
|
<artifactId>tlog-all-spring-boot-starter</artifactId>
|
||||||
<version>1.6</version>
|
<version>1.5.0</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>hutool-core</artifactId>
|
||||||
|
<groupId>cn.hutool</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- elasticsearch-->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.apache.lucene</groupId>
|
||||||
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
|
<artifactId>lucene-core</artifactId>
|
||||||
<version>2.7.5</version>
|
<version>8.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.lucene</groupId>
|
||||||
|
<artifactId>lucene-highlighter</artifactId>
|
||||||
|
<version>8.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.lucene</groupId>
|
||||||
|
<artifactId>lucene-analyzers-common</artifactId>
|
||||||
|
<version>8.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.magese</groupId>
|
||||||
|
<artifactId>ik-analyzer</artifactId>
|
||||||
|
<version>8.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<!--支持中文分词 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.lucene</groupId>
|
||||||
|
<artifactId>lucene-analyzers-smartcn</artifactId>
|
||||||
|
<version>8.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- Lucene查询解析包 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.lucene</groupId>
|
||||||
|
<artifactId>lucene-queryparser</artifactId>
|
||||||
|
<version>8.2.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Excel打印-->
|
<!-- Excel打印-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>e-iceblue</groupId>
|
<groupId>e-iceblue</groupId>
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.aspectj.lang.annotation.Around;
|
|||||||
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
import org.aspectj.lang.annotation.Pointcut;
|
import org.aspectj.lang.annotation.Pointcut;
|
||||||
import org.aspectj.lang.reflect.MethodSignature;
|
import org.aspectj.lang.reflect.MethodSignature;
|
||||||
|
import org.nl.config.lucene.LuceneAppender;
|
||||||
import org.nl.modules.system.util.BaseCode;
|
import org.nl.modules.system.util.BaseCode;
|
||||||
import org.nl.utils.RequestHolder;
|
import org.nl.utils.RequestHolder;
|
||||||
import org.nl.utils.SecurityUtils;
|
import org.nl.utils.SecurityUtils;
|
||||||
@@ -53,7 +54,10 @@ public class LogAspect {
|
|||||||
|
|
||||||
//org.nl.ext.lk.rest org.nl.pda.pdm.rest
|
//org.nl.ext.lk.rest org.nl.pda.pdm.rest
|
||||||
@Pointcut("execution(* org.nl.*.*..rest..*.*(..)) " +
|
@Pointcut("execution(* org.nl.*.*..rest..*.*(..)) " +
|
||||||
"&& !execution(* org.nl.pda.pdm.rest.PfScreenController.*(..)) ")
|
"&& !execution(* org.nl.pda.pdm.rest.PfScreenController.*(..)) " +
|
||||||
|
"&& !execution(* org.nl.modules.system.rest.EsLogController.*(..)) "
|
||||||
|
)
|
||||||
|
|
||||||
public void logPointCut() {
|
public void logPointCut() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,12 +69,12 @@ public class LogAspect {
|
|||||||
String params = getParameter(method, joinPoint.getArgs());
|
String params = getParameter(method, joinPoint.getArgs());
|
||||||
HttpServletRequest request = RequestHolder.getHttpServletRequest();
|
HttpServletRequest request = RequestHolder.getHttpServletRequest();
|
||||||
String url = request.getRequestURI();
|
String url = request.getRequestURI();
|
||||||
|
String traceId = BaseCode.intToChars(IdUtil.getSnowflake(1, 1).nextId());
|
||||||
MDC.put("requestMethod",url);
|
MDC.put("requestMethod",url);
|
||||||
MDC.put("requestIp", StringUtils.getIp(request));
|
MDC.put("requestIp", StringUtils.getIp(request));
|
||||||
MDC.put("traceId", BaseCode.intToChars(IdUtil.getSnowflake(1, 1).nextId()));
|
MDC.put("traceId", traceId);
|
||||||
MDC.put("requestTime", DateUtil.now());
|
MDC.put("requestTime", DateUtil.now());
|
||||||
|
LuceneAppender.traceIdTL.set(traceId);
|
||||||
Object result;
|
Object result;
|
||||||
long comming = System.currentTimeMillis();
|
long comming = System.currentTimeMillis();
|
||||||
try {
|
try {
|
||||||
@@ -94,6 +98,7 @@ public class LogAspect {
|
|||||||
}finally {
|
}finally {
|
||||||
log.info("[--response--][请求接口:{} 执行结束][耗时:{}s]",url,(System.currentTimeMillis() - comming)/1000);
|
log.info("[--response--][请求接口:{} 执行结束][耗时:{}s]",url,(System.currentTimeMillis() - comming)/1000);
|
||||||
MDC.clear();
|
MDC.clear();
|
||||||
|
LuceneAppender.traceIdTL.remove();
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package org.nl.config.lucene;
|
||||||
|
/**
|
||||||
|
* @author ldjun
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023年08月24日 13:00
|
||||||
|
* @desc desc
|
||||||
|
*/
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||||
|
import com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.slf4j.MDC;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
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<String, String> mdcPropertyMap = event.getMDCPropertyMap();
|
||||||
|
if (mdcPropertyMap.getClass().getName().contains("SynchronizedMap")){
|
||||||
|
mdcPropertyMap.put("traceId",traceId);
|
||||||
|
}
|
||||||
|
MDC.clear();
|
||||||
|
}
|
||||||
|
super.append(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package org.nl.config.lucene;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: lyd
|
||||||
|
* @Description: 定义lucene相关常量
|
||||||
|
* @Date: 2023/8/25
|
||||||
|
*/
|
||||||
|
public class LogMessageConstant {
|
||||||
|
/** */
|
||||||
|
public final static String SORT_NAME = "time";
|
||||||
|
/** 级别 */
|
||||||
|
public final static String FIELD_LEVEL = "level";
|
||||||
|
/** 时间 */
|
||||||
|
public final static String FIELD_TIMESTAMP = "timestamp";
|
||||||
|
/** 类的限定名 */
|
||||||
|
public final static String FIELD_CLASS_NAME = "logger";
|
||||||
|
/** 线程名 */
|
||||||
|
public final static String FIELD_THREAD = "thread";
|
||||||
|
/** 日志内容 */
|
||||||
|
public final static String FIELD_MESSAGE = "message";
|
||||||
|
public final static String FIELD_TRACEID = "tlogTraceId";
|
||||||
|
// 定义颜色值
|
||||||
|
/** 文本颜色:黑色 */
|
||||||
|
public final static String COLOR_BLACK = "\u001B[30m";
|
||||||
|
/** 文本颜色:红色 */
|
||||||
|
public final static String COLOR_RED = "\u001B[31m";
|
||||||
|
/** 文本颜色:绿色 */
|
||||||
|
public final static String COLOR_GREEN = "\u001B[32m";
|
||||||
|
/** 文本颜色:黄色 */
|
||||||
|
public final static String COLOR_YELLOW = "\u001B[33m";
|
||||||
|
/** 文本颜色:蓝色 */
|
||||||
|
public final static String COLOR_BLUE = "\u001B[34m";
|
||||||
|
/** 文本颜色:品红色 */
|
||||||
|
public final static String COLOR_MAGENTA = "\u001B[35m";
|
||||||
|
/** 文本颜色:青色 */
|
||||||
|
public final static String COLOR_CYAN = "\u001B[36m";
|
||||||
|
/** 文本颜色:白色 */
|
||||||
|
public final static String COLOR_WHITE = "\u001B[37m";
|
||||||
|
/** 文本颜色重置 */
|
||||||
|
public final static String COLOR_RESET = "\u001B[0m";
|
||||||
|
/** 背景颜色:黄色 */
|
||||||
|
public final static String BACKGROUND_YELLOW = "\u001B[43m";
|
||||||
|
/** 索引路径 */
|
||||||
|
public final static String INDEX_DIR = "E:\\lucene\\index";
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
package org.nl.config.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.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;
|
||||||
|
import org.apache.lucene.index.IndexWriterConfig;
|
||||||
|
import org.apache.lucene.store.Directory;
|
||||||
|
import org.apache.lucene.store.FSDirectory;
|
||||||
|
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.core.io.Resource;
|
||||||
|
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<ILoggingEvent> {
|
||||||
|
|
||||||
|
public static final TransmittableThreadLocal<String> traceIdTL = new TransmittableThreadLocal();
|
||||||
|
public LuceneProperties properties;
|
||||||
|
public static Directory index;
|
||||||
|
private List<LucenePropertyAndEncoder> encoders;
|
||||||
|
public static IndexWriter indexWriter;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start() {
|
||||||
|
super.start();
|
||||||
|
try {
|
||||||
|
Resource resource = new ClassPathResource("config/application.yml");
|
||||||
|
YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
|
||||||
|
yamlPropertiesFactoryBean.setResources(resource);
|
||||||
|
Properties properties = yamlPropertiesFactoryBean.getObject();
|
||||||
|
String luceneDir = properties.getProperty("lucene.index.path");
|
||||||
|
System.out.println("---index地址----"+luceneDir);
|
||||||
|
index = FSDirectory.open(Paths.get(luceneDir));
|
||||||
|
Analyzer analyzer = new IKAnalyzer();
|
||||||
|
IndexWriterConfig config = new IndexWriterConfig(analyzer);
|
||||||
|
indexWriter = new IndexWriter(index, config);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void append(ILoggingEvent event) {
|
||||||
|
Document doc = new Document();
|
||||||
|
for (Property property : this.properties.getProperties()) {
|
||||||
|
LucenePropertyAndEncoder encoder = new LucenePropertyAndEncoder(property, this.context);
|
||||||
|
String encode = encoder.encode(event);
|
||||||
|
doc.add(new StringField(property.getName(), encode, Field.Store.YES));
|
||||||
|
}
|
||||||
|
Map<String, String> 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 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();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop() {
|
||||||
|
super.stop();
|
||||||
|
try {
|
||||||
|
indexWriter.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProperties(LuceneProperties properties) {
|
||||||
|
this.properties = properties;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package org.nl.config.lucene;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class LuceneProperties {
|
||||||
|
|
||||||
|
private List<Property> properties;
|
||||||
|
|
||||||
|
public LuceneProperties() {
|
||||||
|
this.properties = new ArrayList<Property>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Property> getProperties() {
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addProperty(Property property) {
|
||||||
|
properties.add(property);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package org.nl.config.lucene;
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.PatternLayout;
|
||||||
|
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||||
|
import ch.qos.logback.core.Context;
|
||||||
|
import ch.qos.logback.core.pattern.PatternLayoutBase;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @author ZZQ
|
||||||
|
* @Date 2023/12/22 18:11
|
||||||
|
*/
|
||||||
|
public class LucenePropertyAndEncoder {
|
||||||
|
|
||||||
|
private Property property;
|
||||||
|
|
||||||
|
private PatternLayoutBase layout = new PatternLayout();
|
||||||
|
|
||||||
|
public LucenePropertyAndEncoder(Property property, Context context) {
|
||||||
|
this.property = property;
|
||||||
|
this.layout.setContext(context);
|
||||||
|
this.layout.setPattern(String.valueOf(property.getValue()));
|
||||||
|
this.layout.setPostCompileProcessor(null);
|
||||||
|
this.layout.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String encode(ILoggingEvent event) {
|
||||||
|
return layout.doLayout(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return property.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean allowEmpty() {
|
||||||
|
return property.isAllowEmpty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package org.nl.config.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,13 +2,10 @@ package org.nl.modules.system.domain;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @author ZZQ
|
* @author ZZQ
|
||||||
* @Date 2023/2/8 4:06 下午
|
* @Date 2023/2/8 4:06 下午
|
||||||
*/
|
*/
|
||||||
@Document(indexName = "#{@ESConfig.index}", type = "whxr_log")
|
|
||||||
@Data
|
@Data
|
||||||
public class LogRepositoryDTO {
|
public class LogRepositoryDTO {
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
package org.nl.modules.system.repository;
|
|
||||||
|
|
||||||
import org.nl.modules.system.domain.LogRepositoryDTO;
|
|
||||||
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @author ZZQ
|
|
||||||
* @Date 2023/2/8 4:11 下午
|
|
||||||
*/
|
|
||||||
@Repository
|
|
||||||
public interface EsLogRepository extends ElasticsearchRepository<LogRepositoryDTO, String> {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,9 @@ package org.nl.modules.system.rest;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.annotation.Log;
|
import org.nl.annotation.Log;
|
||||||
|
import org.nl.modules.system.service.dto.LogQuery;
|
||||||
import org.nl.start.auto.run.AutoRunService;
|
import org.nl.start.auto.run.AutoRunService;
|
||||||
import org.nl.start.auto.run.ThreadDto;
|
import org.nl.start.auto.run.ThreadDto;
|
||||||
import org.nl.utils.PageUtil;
|
import org.nl.utils.PageUtil;
|
||||||
@@ -23,6 +25,7 @@ import java.util.Map;
|
|||||||
@RequestMapping("/api/autorun")
|
@RequestMapping("/api/autorun")
|
||||||
@Api(tags = "系统:查询自动线程")
|
@Api(tags = "系统:查询自动线程")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@Slf4j
|
||||||
public class AutoRunController {
|
public class AutoRunController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -52,4 +55,21 @@ public class AutoRunController {
|
|||||||
autoRunService.stopThread(code);
|
autoRunService.stopThread(code);
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/thread")
|
||||||
|
//("清空日志")
|
||||||
|
public ResponseEntity<Object> thread(@RequestBody LogQuery query) {
|
||||||
|
log.info("线程链路测试"+Thread.currentThread().getName());
|
||||||
|
Thread thread = new Thread(()->{
|
||||||
|
try {
|
||||||
|
Thread.sleep(5000);
|
||||||
|
log.info("线程链路测试"+Thread.currentThread().getName());
|
||||||
|
log.error("线程链路测试"+Thread.currentThread().getName());
|
||||||
|
}catch (Exception ex){
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
thread.start();
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public class LogQuery {
|
|||||||
* 追踪id
|
* 追踪id
|
||||||
*/
|
*/
|
||||||
private String traceId;
|
private String traceId;
|
||||||
|
private String requestMethod;
|
||||||
/**
|
/**
|
||||||
* 日志内容模糊匹配
|
* 日志内容模糊匹配
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,37 +1,35 @@
|
|||||||
package org.nl.modules.system.service.impl;
|
package org.nl.modules.system.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateField;
|
import cn.hutool.core.date.DateField;
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.db.PageResult;
|
import cn.hutool.db.PageResult;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.lucene.analysis.Analyzer;
|
||||||
import org.elasticsearch.action.search.SearchResponse;
|
import org.apache.lucene.document.Document;
|
||||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
import org.apache.lucene.index.DirectoryReader;
|
||||||
import org.elasticsearch.index.query.QueryBuilders;
|
import org.apache.lucene.index.IndexWriter;
|
||||||
import org.elasticsearch.script.Script;
|
import org.apache.lucene.index.IndexWriterConfig;
|
||||||
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
import org.apache.lucene.index.Term;
|
||||||
import org.elasticsearch.search.aggregations.Aggregations;
|
import org.apache.lucene.queryparser.classic.QueryParser;
|
||||||
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
import org.apache.lucene.search.*;
|
||||||
import org.elasticsearch.search.sort.SortBuilder;
|
import org.apache.lucene.store.FSDirectory;
|
||||||
import org.elasticsearch.search.sort.SortBuilders;
|
import org.apache.lucene.util.BytesRef;
|
||||||
import org.elasticsearch.search.sort.SortOrder;
|
import org.nl.exception.BadRequestException;
|
||||||
import org.nl.modules.system.domain.LogRepositoryDTO;
|
import org.nl.modules.system.domain.LogRepositoryDTO;
|
||||||
import org.nl.modules.system.enums.LevelEnum;
|
|
||||||
import org.nl.modules.system.repository.EsLogRepository;
|
|
||||||
import org.nl.modules.system.service.EsLogService;
|
import org.nl.modules.system.service.EsLogService;
|
||||||
import org.nl.modules.system.service.dto.LogQuery;
|
import org.nl.modules.system.service.dto.LogQuery;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.data.domain.Sort;
|
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
|
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl;
|
|
||||||
import org.springframework.data.elasticsearch.core.query.*;
|
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.wltea.analyzer.lucene.IKAnalyzer;
|
||||||
|
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -42,108 +40,138 @@ import java.util.List;
|
|||||||
* @desc desc
|
* @desc desc
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class EsLogServiceImpl implements EsLogService {
|
public class EsLogServiceImpl implements EsLogService {
|
||||||
|
|
||||||
private final EsLogRepository esLogRepository;
|
static String[] INFO_LEVEL = new String[]{"DEBUG","INFO","WARN","ERROR"};
|
||||||
|
|
||||||
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
|
@Value("${lucene.index.path}")
|
||||||
|
private String indexUrl;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject query(LogQuery logQuery){
|
public JSONObject query(LogQuery logQuery) {
|
||||||
JSONObject res = new JSONObject();
|
JSONObject res = new JSONObject();
|
||||||
PageResult page = new PageResult();
|
PageResult page = new PageResult();
|
||||||
if (logQuery != null){
|
|
||||||
BoolQueryBuilder query = QueryBuilders.boolQuery(); //requestMethod
|
|
||||||
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
|
|
||||||
queryBuilder.withSort(SortBuilders.fieldSort("@timestamp").unmappedType("date").order(SortOrder.DESC));
|
|
||||||
extractedParam(logQuery, query);
|
|
||||||
queryBuilder.withQuery(query);
|
|
||||||
queryBuilder.withPageable(PageRequest.of(logQuery.getPage()-1,logQuery.getSize()));
|
|
||||||
NativeSearchQuery build = queryBuilder.build();
|
|
||||||
Iterable<LogRepositoryDTO> all = esLogRepository.search(build);
|
|
||||||
page.addAll(((AggregatedPageImpl) all).getContent());
|
|
||||||
page.setTotal((int) ((AggregatedPageImpl) all).getTotalElements());
|
|
||||||
page.setPage(logQuery.getPage());
|
page.setPage(logQuery.getPage());
|
||||||
page.setPageSize(logQuery.getSize());
|
page.setPageSize(logQuery.getSize());
|
||||||
res.put("total",page.getTotal());
|
try {
|
||||||
|
FSDirectory directory = FSDirectory.open(Paths.get(indexUrl));
|
||||||
|
DirectoryReader open = DirectoryReader.open(directory);
|
||||||
|
IndexSearcher searcher = new IndexSearcher(open);
|
||||||
|
// 创建排序对象,需要排序字段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(); }
|
||||||
|
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);
|
||||||
|
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()));
|
||||||
|
booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isNotEmpty(logQuery.getLogLevel())){
|
||||||
|
TermQuery termQuery = new TermQuery(new Term("logLevel", logQuery.getLogLevel()));
|
||||||
|
booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isNotEmpty(logQuery.getSystem())) {
|
||||||
|
TermQuery termQuery = new TermQuery(new Term("system", logQuery.getSystem()));
|
||||||
|
booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isNotEmpty(logQuery.getRequestMethod())) {
|
||||||
|
TermQuery termQuery = new TermQuery(new Term("requestMethod", logQuery.getRequestMethod()));
|
||||||
|
booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
|
||||||
|
}
|
||||||
|
if (Boolean.TRUE.equals(logQuery.getIsRequest())) {
|
||||||
|
Term traceid = new Term("traceId");
|
||||||
|
TermQuery termQuery = new TermQuery(traceid);
|
||||||
|
booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST_NOT);
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isNotEmpty(logQuery.getMessage())){
|
||||||
|
//查询解析器
|
||||||
|
QueryParser queryParser = new QueryParser("message", new IKAnalyzer(true));
|
||||||
|
Query query = queryParser.parse(logQuery.getMessage());
|
||||||
|
booleanQueryBuilder.add(query, BooleanClause.Occur.MUST);
|
||||||
|
}
|
||||||
|
|
||||||
|
TopFieldCollector collector = TopFieldCollector.create(new Sort(new SortField("time", SortField.Type.LONG,true)), 20000, 0);
|
||||||
|
searcher.search(booleanQueryBuilder.build(), collector);
|
||||||
|
TopDocs topDocs = collector.topDocs((logQuery.getPage()-1)*logQuery.getSize(), logQuery.getSize());
|
||||||
|
int totalSize = collector.getTotalHits();
|
||||||
|
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
|
||||||
|
|
||||||
|
List<LogRepositoryDTO> list = new ArrayList<>();
|
||||||
|
for (ScoreDoc scoreDoc : scoreDocs) {
|
||||||
|
Document doc = open.document(scoreDoc.doc);
|
||||||
|
LogRepositoryDTO dto = new LogRepositoryDTO();
|
||||||
|
dto.setSystem(doc.get("system"));
|
||||||
|
dto.setTraceId(doc.get("traceId"));
|
||||||
|
dto.setLogger(doc.get("logger"));
|
||||||
|
dto.setLogLevel(doc.get("logLevel"));
|
||||||
|
dto.setMessage(doc.get("message"));
|
||||||
|
dto.setRequestIp(doc.get("requestIp"));
|
||||||
|
dto.setRequestMethod(doc.get("requestMethod"));
|
||||||
|
dto.setRequestTime(doc.get("requestTime"));
|
||||||
|
dto.setThread(doc.get("thread"));
|
||||||
|
list.add(dto);
|
||||||
|
}
|
||||||
|
open.close();
|
||||||
|
directory.close();
|
||||||
|
page.addAll(list);
|
||||||
|
page.setTotal(scoreDocs.length);
|
||||||
|
res.put("total", totalSize);
|
||||||
|
}catch (Exception ex){
|
||||||
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
res.put("page",page);
|
res.put("page",page);
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Async
|
@Async
|
||||||
public void clearLogs(LogQuery logQuery) {
|
public void clearLogs(LogQuery logQuery) {
|
||||||
String system = logQuery.getSystem();
|
try {
|
||||||
if (StringUtils.isEmpty(system)){
|
// 初始化 Lucene 索引
|
||||||
return;
|
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();
|
||||||
}
|
}
|
||||||
log.info("清除日志"+system);
|
}catch (Exception ex){
|
||||||
BoolQueryBuilder query = QueryBuilders.boolQuery();
|
throw new BadRequestException("删除失败:"+ex.getMessage());
|
||||||
if (!StringUtils.isEmpty(system)){
|
|
||||||
query.must().add(QueryBuilders.matchQuery("system", system));
|
|
||||||
}
|
|
||||||
DeleteQuery deleteQuery = new DeleteQuery();
|
|
||||||
deleteQuery.setQuery(query);
|
|
||||||
elasticsearchRestTemplate.delete(deleteQuery,new LogRepositoryDTO().getClass());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void extractedQueryParam(LogQuery logQuery, BoolQueryBuilder query) {
|
|
||||||
extractedParam(logQuery,query);
|
|
||||||
if (logQuery.getIsRequest()){
|
|
||||||
query.must().add(QueryBuilders.existsQuery("requestMethod"));
|
|
||||||
}
|
|
||||||
if (logQuery.getFilterSql()){
|
|
||||||
query.mustNot().add(QueryBuilders.wildcardQuery("logger","org.nl.modules.wql.core.engine.*"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void extractedParam(LogQuery logQuery, BoolQueryBuilder query) {
|
|
||||||
if (StringUtils.isNotEmpty(logQuery.getLogLevel())){
|
|
||||||
query.must().add(QueryBuilders.matchQuery("logLevel.keyword", LevelEnum.checkLevel(logQuery.getLogLevel())));
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotEmpty(logQuery.getSystem())){
|
|
||||||
query.must().add(QueryBuilders.matchQuery("system.keyword", logQuery.getSystem()));
|
|
||||||
}
|
|
||||||
query.mustNot().add(QueryBuilders.matchPhraseQuery("logger","org.elasticsearch.client.RestClient"));
|
|
||||||
if (StringUtils.isNotEmpty(logQuery.getTraceId())){
|
|
||||||
query.must().add(QueryBuilders.matchQuery("traceId", logQuery.getTraceId()));
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotEmpty(logQuery.getMessage())){
|
|
||||||
query.must().add(QueryBuilders.matchPhraseQuery("message", logQuery.getMessage()));
|
|
||||||
}
|
|
||||||
if (logQuery.getEndTime()!=null ){
|
|
||||||
String script = "doc['@timestamp'].value.millis < " + logQuery.getEndTime().getTime() + "L";
|
|
||||||
query.must().add(QueryBuilders.scriptQuery(new Script(script)));
|
|
||||||
}
|
|
||||||
if (logQuery.getStartTime()!=null){
|
|
||||||
String script = "doc['@timestamp'].value.millis > " + logQuery.getStartTime().getTime() + "L";
|
|
||||||
query.must().add(QueryBuilders.scriptQuery(new Script(script)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONArray getLabelsValues(String type) {
|
public JSONArray getLabelsValues(String type) {
|
||||||
JSONArray result = new JSONArray();
|
JSONArray result = new JSONArray();
|
||||||
FetchSourceFilter fetchSourceFilter = new FetchSourceFilter(new String[]{type}, null);
|
for (String v : INFO_LEVEL) {
|
||||||
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
|
|
||||||
queryBuilder.withCollapseField(type+".keyword");
|
|
||||||
queryBuilder.withSourceFilter(fetchSourceFilter);
|
|
||||||
queryBuilder.addAggregation(AggregationBuilders.terms(type).field(type+".keyword").size(100));
|
|
||||||
Aggregations agg = elasticsearchRestTemplate.query(queryBuilder.build(), SearchResponse::getAggregations);
|
|
||||||
Terms terms = agg.get(type);
|
|
||||||
List<? extends Terms.Bucket> buckets = terms.getBuckets();
|
|
||||||
if (!CollectionUtils.isEmpty(buckets)){
|
|
||||||
buckets.stream().map(Terms.Bucket::getKeyAsString).forEach(v-> {
|
|
||||||
JSONObject item = new JSONObject();
|
JSONObject item = new JSONObject();
|
||||||
item.put("label", v);
|
item.put("label", v);
|
||||||
item.put("value", v);
|
item.put("value", v);
|
||||||
result.add(item);
|
result.add(item);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ public class MonitorServiceImpl implements MonitorService {
|
|||||||
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
|
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
|
||||||
Date date = new Date(time);
|
Date date = new Date(time);
|
||||||
// 计算项目运行时间
|
// 计算项目运行时间
|
||||||
String formatBetween = DateUtil.formatBetween(date, new Date(),BetweenFormater.Level.HOUR);
|
String formatBetween = DateUtil.formatBetween(date, new Date(), BetweenFormater.Level.HOUR);
|
||||||
// 系统信息
|
// 系统信息
|
||||||
systemInfo.put("os", os.toString());
|
systemInfo.put("os", os.toString());
|
||||||
systemInfo.put("day", formatBetween);
|
systemInfo.put("day", formatBetween);
|
||||||
|
|||||||
@@ -15,21 +15,6 @@ erp:
|
|||||||
|
|
||||||
#配置数据源
|
#配置数据源
|
||||||
spring:
|
spring:
|
||||||
data:
|
|
||||||
elasticsearch:
|
|
||||||
repositories:
|
|
||||||
enabled: true
|
|
||||||
client:
|
|
||||||
reactive:
|
|
||||||
#endpoints: 172.31.185.110:9200,172.31.154.9:9200 #内网
|
|
||||||
endpoints: 127.0.0.1:9200 #外网
|
|
||||||
# endpoints: http://10.1.3.90:9200 #外网
|
|
||||||
elasticsearch:
|
|
||||||
rest:
|
|
||||||
#uris: 172.31.185.110:9200,172.31.154.9:9200 #内网
|
|
||||||
uris: 127.0.0.1:9200 #外网
|
|
||||||
# uris: http://10.1.3.90:9200 #外网
|
|
||||||
|
|
||||||
datasource:
|
datasource:
|
||||||
druid:
|
druid:
|
||||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||||
|
|||||||
@@ -14,22 +14,6 @@ erp:
|
|||||||
password: 123456
|
password: 123456
|
||||||
#配置数据源
|
#配置数据源
|
||||||
spring:
|
spring:
|
||||||
data:
|
|
||||||
elasticsearch:
|
|
||||||
repositories:
|
|
||||||
enabled: true
|
|
||||||
client:
|
|
||||||
reactive:
|
|
||||||
#endpoints: 172.31.185.110:9200,172.31.154.9:9200 #内网
|
|
||||||
endpoints: 127.0.0.1:9200 #外网
|
|
||||||
# endpoints: http://10.1.3.90:9200 #外网
|
|
||||||
elasticsearch:
|
|
||||||
rest:
|
|
||||||
#uris: 172.31.185.110:9200,172.31.154.9:9200 #内网
|
|
||||||
uris: 127.0.0.1:9200 #外网
|
|
||||||
# uris: http://10.1.3.90:9200 #外网
|
|
||||||
# username: elastic
|
|
||||||
# password: 123456
|
|
||||||
datasource:
|
datasource:
|
||||||
druid:
|
druid:
|
||||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||||
|
|||||||
@@ -45,3 +45,6 @@ logging:
|
|||||||
file:
|
file:
|
||||||
path: C:\log\wms
|
path: C:\log\wms
|
||||||
config: classpath:logback-spring.xml
|
config: classpath:logback-spring.xml
|
||||||
|
lucene:
|
||||||
|
index:
|
||||||
|
path: E:\lms\lucene\index
|
||||||
|
|||||||
@@ -2,65 +2,6 @@
|
|||||||
<included>
|
<included>
|
||||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
||||||
<property name="LOG_HOME" value="${logPath}"/>
|
<property name="LOG_HOME" value="${logPath}"/>
|
||||||
<appender name="esLogAppender" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
|
|
||||||
<url>http://10.16.1.24:9200/_bulk</url>
|
|
||||||
<index>${esIndex}</index>
|
|
||||||
<type>whxr_log</type>
|
|
||||||
<loggerName>es-logger</loggerName> <!-- optional -->
|
|
||||||
<errorLoggerName>es-error-logger</errorLoggerName> <!-- optional -->
|
|
||||||
<connectTimeout>30000</connectTimeout> <!-- optional (in ms, default 30000) -->
|
|
||||||
<errorsToStderr>false</errorsToStderr> <!-- optional (default false) -->
|
|
||||||
<includeCallerData>false</includeCallerData> <!-- optional (default false) -->
|
|
||||||
<logsToStderr>false</logsToStderr> <!-- optional (default false) -->
|
|
||||||
<maxQueueSize>104857600</maxQueueSize> <!-- optional (default 104857600) -->
|
|
||||||
<maxRetries>3</maxRetries> <!-- optional (default 3) -->
|
|
||||||
<readTimeout>30000</readTimeout> <!-- optional (in ms, default 30000) -->
|
|
||||||
<sleepTime>250</sleepTime> <!-- optional (in ms, default 250) -->
|
|
||||||
<rawJsonMessage>false</rawJsonMessage> <!-- optional (default false) -->
|
|
||||||
<includeMdc>false</includeMdc> <!-- optional (default false) -->
|
|
||||||
<maxMessageSize>20000</maxMessageSize> <!-- optional (default -1 -->
|
|
||||||
<!-- <authentication class="com.internetitem.logback.elasticsearch.config.BasicAuthentication" /> <!– optional –>-->
|
|
||||||
<properties>
|
|
||||||
<property>
|
|
||||||
<name>system</name>
|
|
||||||
<value>mes</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>traceId</name>
|
|
||||||
<value>%X{traceId}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>logLevel</name>
|
|
||||||
<value>%level</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestMethod</name>
|
|
||||||
<value>%X{requestMethod}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestTime</name>
|
|
||||||
<value>%d{yyyy-MM-dd HH:mm:ss.SSS}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestIp</name>
|
|
||||||
<value>%X{requestIp}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>thread</name>
|
|
||||||
<value>%thread</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>logger</name>
|
|
||||||
<value>%logger</value>
|
|
||||||
</property>
|
|
||||||
</properties>
|
|
||||||
<headers>
|
|
||||||
<header>
|
|
||||||
<name>Content-Type</name>
|
|
||||||
<value>application/json</value>
|
|
||||||
</header>
|
|
||||||
</headers>
|
|
||||||
</appender>
|
|
||||||
<springProperty scope="context" name="esIndex" source="es.index"/>
|
<springProperty scope="context" name="esIndex" source="es.index"/>
|
||||||
|
|
||||||
<!-- 按照每天生成日志文件 -->
|
<!-- 按照每天生成日志文件 -->
|
||||||
@@ -83,7 +24,6 @@
|
|||||||
|
|
||||||
<logger name="org.nl.ext.lk.service.impl.LkToWmsServiceImpl" level="info" additivity="false">
|
<logger name="org.nl.ext.lk.service.impl.LkToWmsServiceImpl" level="info" additivity="false">
|
||||||
<appender-ref ref="FILE3"/>
|
<appender-ref ref="FILE3"/>
|
||||||
<appender-ref ref="esLogAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<!-- 打印sql -->
|
<!-- 打印sql -->
|
||||||
|
|||||||
@@ -2,65 +2,6 @@
|
|||||||
<included>
|
<included>
|
||||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
||||||
<property name="LOG_HOME" value="${logPath}"/>
|
<property name="LOG_HOME" value="${logPath}"/>
|
||||||
<appender name="esLogAppender" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
|
|
||||||
<url>http://127.0.0.1:9200/_bulk</url>
|
|
||||||
<index>${esIndex}</index>
|
|
||||||
<type>whxr_log</type>
|
|
||||||
<loggerName>es-logger</loggerName> <!-- optional -->
|
|
||||||
<errorLoggerName>es-error-logger</errorLoggerName> <!-- optional -->
|
|
||||||
<connectTimeout>30000</connectTimeout> <!-- optional (in ms, default 30000) -->
|
|
||||||
<errorsToStderr>false</errorsToStderr> <!-- optional (default false) -->
|
|
||||||
<includeCallerData>false</includeCallerData> <!-- optional (default false) -->
|
|
||||||
<logsToStderr>false</logsToStderr> <!-- optional (default false) -->
|
|
||||||
<maxQueueSize>104857600</maxQueueSize> <!-- optional (default 104857600) -->
|
|
||||||
<maxRetries>3</maxRetries> <!-- optional (default 3) -->
|
|
||||||
<readTimeout>30000</readTimeout> <!-- optional (in ms, default 30000) -->
|
|
||||||
<sleepTime>250</sleepTime> <!-- optional (in ms, default 250) -->
|
|
||||||
<rawJsonMessage>false</rawJsonMessage> <!-- optional (default false) -->
|
|
||||||
<includeMdc>false</includeMdc> <!-- optional (default false) -->
|
|
||||||
<maxMessageSize>20000</maxMessageSize> <!-- optional (default -1 -->
|
|
||||||
<!-- <authentication class="com.internetitem.logback.elasticsearch.config.BasicAuthentication" /> <!– optional –>-->
|
|
||||||
<properties>
|
|
||||||
<property>
|
|
||||||
<name>system</name>
|
|
||||||
<value>mes</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>traceId</name>
|
|
||||||
<value>%X{traceId}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>logLevel</name>
|
|
||||||
<value>%level</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestMethod</name>
|
|
||||||
<value>%X{requestMethod}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestTime</name>
|
|
||||||
<value>%d{yyyy-MM-dd HH:mm:ss.SSS}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestIp</name>
|
|
||||||
<value>%X{requestIp}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>thread</name>
|
|
||||||
<value>%thread</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>logger</name>
|
|
||||||
<value>%logger</value>
|
|
||||||
</property>
|
|
||||||
</properties>
|
|
||||||
<headers>
|
|
||||||
<header>
|
|
||||||
<name>Content-Type</name>
|
|
||||||
<value>application/json</value>
|
|
||||||
</header>
|
|
||||||
</headers>
|
|
||||||
</appender>
|
|
||||||
<springProperty scope="context" name="esIndex" source="es.index"/>
|
<springProperty scope="context" name="esIndex" source="es.index"/>
|
||||||
<!-- 按照每天生成日志文件 -->
|
<!-- 按照每天生成日志文件 -->
|
||||||
<appender name="FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<appender name="FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
@@ -82,7 +23,6 @@
|
|||||||
|
|
||||||
<logger name="org.nl.wms.st.returns.service.impl.InAndOutRetrunServiceImpl" level="info" additivity="false">
|
<logger name="org.nl.wms.st.returns.service.impl.InAndOutRetrunServiceImpl" level="info" additivity="false">
|
||||||
<appender-ref ref="FILE2"/>
|
<appender-ref ref="FILE2"/>
|
||||||
<appender-ref ref="esLogAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<!-- 打印sql -->
|
<!-- 打印sql -->
|
||||||
|
|||||||
@@ -2,65 +2,6 @@
|
|||||||
<included>
|
<included>
|
||||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
||||||
<property name="LOG_HOME" value="${logPath}"/>
|
<property name="LOG_HOME" value="${logPath}"/>
|
||||||
<appender name="esLogAppender" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
|
|
||||||
<url>http://10.16.1.24:9200/_bulk</url>
|
|
||||||
<index>${esIndex}</index>
|
|
||||||
<type>whxr_log</type>
|
|
||||||
<loggerName>es-logger</loggerName> <!-- optional -->
|
|
||||||
<errorLoggerName>es-error-logger</errorLoggerName> <!-- optional -->
|
|
||||||
<connectTimeout>30000</connectTimeout> <!-- optional (in ms, default 30000) -->
|
|
||||||
<errorsToStderr>false</errorsToStderr> <!-- optional (default false) -->
|
|
||||||
<includeCallerData>false</includeCallerData> <!-- optional (default false) -->
|
|
||||||
<logsToStderr>false</logsToStderr> <!-- optional (default false) -->
|
|
||||||
<maxQueueSize>104857600</maxQueueSize> <!-- optional (default 104857600) -->
|
|
||||||
<maxRetries>3</maxRetries> <!-- optional (default 3) -->
|
|
||||||
<readTimeout>30000</readTimeout> <!-- optional (in ms, default 30000) -->
|
|
||||||
<sleepTime>250</sleepTime> <!-- optional (in ms, default 250) -->
|
|
||||||
<rawJsonMessage>false</rawJsonMessage> <!-- optional (default false) -->
|
|
||||||
<includeMdc>false</includeMdc> <!-- optional (default false) -->
|
|
||||||
<maxMessageSize>20000</maxMessageSize> <!-- optional (default -1 -->
|
|
||||||
<!-- <authentication class="com.internetitem.logback.elasticsearch.config.BasicAuthentication" /> <!– optional –>-->
|
|
||||||
<properties>
|
|
||||||
<property>
|
|
||||||
<name>system</name>
|
|
||||||
<value>mes</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>traceId</name>
|
|
||||||
<value>%X{traceId}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>logLevel</name>
|
|
||||||
<value>%level</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestMethod</name>
|
|
||||||
<value>%X{requestMethod}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestTime</name>
|
|
||||||
<value>%d{yyyy-MM-dd HH:mm:ss.SSS}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestIp</name>
|
|
||||||
<value>%X{requestIp}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>thread</name>
|
|
||||||
<value>%thread</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>logger</name>
|
|
||||||
<value>%logger</value>
|
|
||||||
</property>
|
|
||||||
</properties>
|
|
||||||
<headers>
|
|
||||||
<header>
|
|
||||||
<name>Content-Type</name>
|
|
||||||
<value>application/json</value>
|
|
||||||
</header>
|
|
||||||
</headers>
|
|
||||||
</appender>
|
|
||||||
<springProperty scope="context" name="esIndex" source="es.index"/>
|
<springProperty scope="context" name="esIndex" source="es.index"/>
|
||||||
<!-- 按照每天生成日志文件 -->
|
<!-- 按照每天生成日志文件 -->
|
||||||
<appender name="FILE4" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<appender name="FILE4" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
@@ -82,7 +23,6 @@
|
|||||||
|
|
||||||
<logger name="org.nl.ext.lk.service.impl.WmsToLkServiceImpl" level="info" additivity="false">
|
<logger name="org.nl.ext.lk.service.impl.WmsToLkServiceImpl" level="info" additivity="false">
|
||||||
<appender-ref ref="FILE4"/>
|
<appender-ref ref="FILE4"/>
|
||||||
<appender-ref ref="esLogAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<!-- 打印sql -->
|
<!-- 打印sql -->
|
||||||
|
|||||||
@@ -2,65 +2,6 @@
|
|||||||
<included>
|
<included>
|
||||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
||||||
<property name="LOG_HOME" value="${logPath}"/>
|
<property name="LOG_HOME" value="${logPath}"/>
|
||||||
<appender name="esLogAppender" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
|
|
||||||
<url>http://10.16.1.24:9200/_bulk</url>
|
|
||||||
<index>${esIndex}</index>
|
|
||||||
<type>whxr_log</type>
|
|
||||||
<loggerName>es-logger</loggerName> <!-- optional -->
|
|
||||||
<errorLoggerName>es-error-logger</errorLoggerName> <!-- optional -->
|
|
||||||
<connectTimeout>30000</connectTimeout> <!-- optional (in ms, default 30000) -->
|
|
||||||
<errorsToStderr>false</errorsToStderr> <!-- optional (default false) -->
|
|
||||||
<includeCallerData>false</includeCallerData> <!-- optional (default false) -->
|
|
||||||
<logsToStderr>false</logsToStderr> <!-- optional (default false) -->
|
|
||||||
<maxQueueSize>104857600</maxQueueSize> <!-- optional (default 104857600) -->
|
|
||||||
<maxRetries>3</maxRetries> <!-- optional (default 3) -->
|
|
||||||
<readTimeout>30000</readTimeout> <!-- optional (in ms, default 30000) -->
|
|
||||||
<sleepTime>250</sleepTime> <!-- optional (in ms, default 250) -->
|
|
||||||
<rawJsonMessage>false</rawJsonMessage> <!-- optional (default false) -->
|
|
||||||
<includeMdc>false</includeMdc> <!-- optional (default false) -->
|
|
||||||
<maxMessageSize>20000</maxMessageSize> <!-- optional (default -1 -->
|
|
||||||
<!-- <authentication class="com.internetitem.logback.elasticsearch.config.BasicAuthentication" /> <!– optional –>-->
|
|
||||||
<properties>
|
|
||||||
<property>
|
|
||||||
<name>system</name>
|
|
||||||
<value>mes</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>traceId</name>
|
|
||||||
<value>%X{traceId}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>logLevel</name>
|
|
||||||
<value>%level</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestMethod</name>
|
|
||||||
<value>%X{requestMethod}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestTime</name>
|
|
||||||
<value>%d{yyyy-MM-dd HH:mm:ss.SSS}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>requestIp</name>
|
|
||||||
<value>%X{requestIp}</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>thread</name>
|
|
||||||
<value>%thread</value>
|
|
||||||
</property>
|
|
||||||
<property>
|
|
||||||
<name>logger</name>
|
|
||||||
<value>%logger</value>
|
|
||||||
</property>
|
|
||||||
</properties>
|
|
||||||
<headers>
|
|
||||||
<header>
|
|
||||||
<name>Content-Type</name>
|
|
||||||
<value>application/json</value>
|
|
||||||
</header>
|
|
||||||
</headers>
|
|
||||||
</appender>
|
|
||||||
<springProperty scope="context" name="esIndex" source="es.index"/>
|
<springProperty scope="context" name="esIndex" source="es.index"/>
|
||||||
<!-- 按照每天生成日志文件 -->
|
<!-- 按照每天生成日志文件 -->
|
||||||
<appender name="FILE1" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<appender name="FILE1" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
|||||||
@@ -13,25 +13,8 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<property name="log.charset" value="utf-8"/>
|
<property name="log.charset" value="utf-8"/>
|
||||||
<property name="log.pattern"
|
<property name="log.pattern"
|
||||||
value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
|
value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
|
||||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
|
||||||
<springProperty scope="context" name="esIndex" source="es.index"/>
|
|
||||||
<property name="LOG_HOME" value="${logPath}"/>
|
<property name="LOG_HOME" value="${logPath}"/>
|
||||||
<!--引入默认的一些设置-->
|
s <!-- 按照每天生成日志文件 -->
|
||||||
<include resource="log/XrToMes.xml"/>
|
|
||||||
<include resource="log/MesToErp.xml"/>
|
|
||||||
<include resource="log/LKToMes.xml"/>
|
|
||||||
<include resource="log/MesToLK.xml"/>
|
|
||||||
|
|
||||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
|
||||||
<encoder>
|
|
||||||
<pattern>${log.pattern}</pattern>
|
|
||||||
<charset>${log.charset}</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
|
|
||||||
<property name="LOG_HOME" value="${logPath}"/>
|
|
||||||
<!-- 按照每天生成日志文件 -->
|
|
||||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<!--日志文件输出的文件名-->
|
<!--日志文件输出的文件名-->
|
||||||
@@ -47,30 +30,22 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
||||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||||
</encoder>
|
</encoder>
|
||||||
|
|
||||||
</appender>
|
</appender>
|
||||||
<appender name="esLogAppender" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
|
|
||||||
<url>http://127.0.0.1:9200/_bulk</url>
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
<index>${esIndex}</index>
|
<!-- 控制台高亮-->
|
||||||
<type>whxr_log</type>
|
<withJansi>true</withJansi>
|
||||||
<loggerName>es-logger</loggerName> <!-- optional -->
|
<encoder>
|
||||||
<errorLoggerName>es-error-logger</errorLoggerName> <!-- optional -->
|
<pattern>${log.pattern}</pattern>
|
||||||
<connectTimeout>30000</connectTimeout> <!-- optional (in ms, default 30000) -->
|
<charset>${log.charset}</charset>
|
||||||
<errorsToStderr>false</errorsToStderr> <!-- optional (default false) -->
|
</encoder>
|
||||||
<includeCallerData>false</includeCallerData> <!-- optional (default false) -->
|
</appender>
|
||||||
<logsToStderr>false</logsToStderr> <!-- optional (default false) -->
|
|
||||||
<maxQueueSize>104857600</maxQueueSize> <!-- optional (default 104857600) -->
|
<appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" >
|
||||||
<maxRetries>3</maxRetries> <!-- optional (default 3) -->
|
|
||||||
<readTimeout>30000</readTimeout> <!-- optional (in ms, default 30000) -->
|
|
||||||
<sleepTime>250</sleepTime> <!-- optional (in ms, default 250) -->
|
|
||||||
<rawJsonMessage>false</rawJsonMessage> <!-- optional (default false) -->
|
|
||||||
<includeMdc>false</includeMdc> <!-- optional (default false) -->
|
|
||||||
<maxMessageSize>20000</maxMessageSize> <!-- optional (default -1 -->
|
|
||||||
<!-- <authentication class="com.internetitem.logback.elasticsearch.config.BasicAuthentication" /> <!– optional –>-->
|
|
||||||
<properties>
|
<properties>
|
||||||
<property>
|
<property>
|
||||||
<name>system</name>
|
<name>system</name>
|
||||||
<value>mes</value>
|
<value>lms</value>
|
||||||
</property>
|
</property>
|
||||||
<property>
|
<property>
|
||||||
<name>traceId</name>
|
<name>traceId</name>
|
||||||
@@ -101,14 +76,12 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<value>%logger</value>
|
<value>%logger</value>
|
||||||
</property>
|
</property>
|
||||||
</properties>
|
</properties>
|
||||||
<headers>
|
|
||||||
<header>
|
|
||||||
<name>Content-Type</name>
|
|
||||||
<value>application/json</value>
|
|
||||||
</header>
|
|
||||||
</headers>
|
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
<appender name="asyncLuceneAppender" class="org.nl.config.lucene.AsyncLuceneAppender">
|
||||||
|
<appender-ref ref="luceneAppender" />
|
||||||
|
<queueSize>512</queueSize>
|
||||||
|
</appender>
|
||||||
|
|
||||||
<!--异步到文件-->
|
<!--异步到文件-->
|
||||||
<appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
|
<appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
@@ -119,118 +92,51 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
|
|
||||||
<!--开发环境:打印控制台-->
|
<!--开发环境:打印控制台-->
|
||||||
<springProfile name="dev">
|
<springProfile name="dev">
|
||||||
<root level="info">
|
<root level="debug">
|
||||||
<appender-ref ref="esLogAppender"/>
|
<appender-ref ref="asyncLuceneAppender"/>
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
</root>
|
</root>
|
||||||
<logger name="es-logger" level="warn" additivity="false">
|
|
||||||
<appender-ref ref="esLogAppender"/>
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="org.springframework" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="org.nl.wql.core.engine.object.WP" level="off">
|
|
||||||
</logger>
|
|
||||||
<logger name="org.hibernate" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="io.netty" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="jdbc" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="io.lettuce" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="com.fasterxml" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="org.quartz" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="com.google" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="springfox" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="log4jdbc" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="nl.basjes" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
</springProfile>
|
</springProfile>
|
||||||
|
|
||||||
|
|
||||||
<!--生产环境:打印控制台和输出到文件-->
|
<!--生产环境:打印控制台和输出到文件-->
|
||||||
<springProfile name="prod">
|
<springProfile name="prod">
|
||||||
<root level="info">
|
<root level="info">
|
||||||
<appender-ref ref="esLogAppender"/>
|
<appender-ref ref="asyncLuceneAppender"/>
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
|
||||||
</root>
|
|
||||||
<logger name="es-logger" level="warn" additivity="false">
|
|
||||||
<appender-ref ref="esLogAppender"/>
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
</logger>
|
</root>
|
||||||
<logger name="org.springframework" level="ERROR" additivity="false">
|
<logger name="org.springframework" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="org.hibernate" level="ERROR" additivity="false">
|
<logger name="org.hibernate" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="io.netty" level="ERROR" additivity="false">
|
<logger name="io.netty" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="jdbc" level="ERROR" additivity="false">
|
<logger name="jdbc" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="io.lettuce" level="ERROR" additivity="false">
|
<logger name="io.lettuce" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="com.fasterxml" level="ERROR" additivity="false">
|
<logger name="com.fasterxml" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="org.quartz" level="ERROR" additivity="false">
|
<logger name="org.quartz" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="com.google" level="ERROR" additivity="false">
|
<logger name="com.google" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="springfox" level="ERROR" additivity="false">
|
<logger name="springfox" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="log4jdbc" level="ERROR" additivity="false">
|
<logger name="log4jdbc" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="nl.basjes" level="ERROR" additivity="false">
|
<logger name="nl.basjes" level="ERROR" additivity="true">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
</logger>
|
</logger>
|
||||||
</springProfile>
|
</springProfile>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--测试环境:打印控制台-->
|
|
||||||
<springProfile name="test">
|
|
||||||
<root level="info">
|
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
|
||||||
</root>
|
|
||||||
<logger name="jdbc.audit" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="jdbc.resultset" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="springfox.documentation" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="jdbc.sqlonly" level="ERROR" additivity="false">
|
|
||||||
<appender-ref ref="CONSOLE"/>
|
|
||||||
</logger>
|
|
||||||
</springProfile>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
@@ -33,6 +33,14 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="接口">
|
||||||
|
<el-input
|
||||||
|
v-model="requestMethod"
|
||||||
|
size="mini"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
clearable
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="关键字">
|
<el-form-item label="关键字">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="message"
|
v-model="message"
|
||||||
@@ -49,16 +57,6 @@
|
|||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="SQL日志" prop="filterSql">
|
|
||||||
<el-switch
|
|
||||||
v-model="filterSql"
|
|
||||||
active-color="#F56C6C"
|
|
||||||
inactive-color="#409EFF"
|
|
||||||
active-value="1"
|
|
||||||
inactive-valu="0"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="HTTP日志" prop="isRequest">
|
<el-form-item label="HTTP日志" prop="isRequest">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="isRequest"
|
v-model="isRequest"
|
||||||
@@ -192,6 +190,7 @@ export default {
|
|||||||
traceId: '',
|
traceId: '',
|
||||||
size: 20,
|
size: 20,
|
||||||
logData: [],
|
logData: [],
|
||||||
|
requestMethod: '',
|
||||||
filterSql: '1',
|
filterSql: '1',
|
||||||
isRequest: '1',
|
isRequest: '1',
|
||||||
logs: [], // 所有日志
|
logs: [], // 所有日志
|
||||||
@@ -298,8 +297,9 @@ export default {
|
|||||||
}
|
}
|
||||||
queryParam.message = this.message.replace(/^\s*|\s*$/g, '')
|
queryParam.message = this.message.replace(/^\s*|\s*$/g, '')
|
||||||
queryParam.filterSql = this.filterSql === '1'
|
queryParam.filterSql = this.filterSql === '1'
|
||||||
queryParam.isRequest = this.filterSql === '1'
|
queryParam.isRequest = this.isRequest === '1'
|
||||||
queryParam.traceId = this.traceId
|
queryParam.traceId = this.traceId
|
||||||
|
queryParam.requestMethod = this.requestMethod
|
||||||
queryParam.size = this.size
|
queryParam.size = this.size
|
||||||
queryParam.page = this.page
|
queryParam.page = this.page
|
||||||
queryParam.system = this.system
|
queryParam.system = this.system
|
||||||
|
|||||||
Reference in New Issue
Block a user