opt: lucene,链路追踪,MDC
This commit is contained in:
@@ -355,7 +355,12 @@
|
||||
<dependency>
|
||||
<groupId>com.alicp.jetcache</groupId>
|
||||
<artifactId>jetcache-starter-redis</artifactId>
|
||||
<version>2.5.14</version>
|
||||
<version>2.7.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>redis.clients</groupId>
|
||||
<artifactId>jedis</artifactId>
|
||||
<version>4.3.1</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
@@ -3,15 +3,16 @@ package org.nl;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
|
||||
import com.alicp.jetcache.anno.config.EnableMethodCache;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.dynamictp.core.spring.EnableDynamicTp;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.nl.common.annotation.Limit;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
||||
import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration;
|
||||
import org.springframework.boot.web.servlet.ServletComponentScan;
|
||||
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
@@ -26,10 +27,12 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
* @author ldjun
|
||||
* @date 2021/2/22 9:20:19
|
||||
*/
|
||||
@Slf4j
|
||||
@EnableAsync
|
||||
@RestController
|
||||
@EnableDynamicTp
|
||||
@SpringBootApplication(exclude = {
|
||||
QuartzAutoConfiguration.class,
|
||||
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
|
||||
})
|
||||
@ServletComponentScan
|
||||
@@ -48,7 +51,6 @@ public class AppRun {
|
||||
return new SpringContextHolder();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 访问首页提示
|
||||
@@ -59,6 +61,8 @@ public class AppRun {
|
||||
@Limit(period = 2, count = 1)
|
||||
@SaIgnore
|
||||
public String index() {
|
||||
MDC.put("system", "SSS");
|
||||
log.info("sssss");
|
||||
return "Backend service started successfully";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,9 +7,17 @@ package org.nl.config.lucene;
|
||||
*/
|
||||
public class LogMessageConstant {
|
||||
/**
|
||||
*
|
||||
* 标签
|
||||
*/
|
||||
public final static String LABEL = "label";
|
||||
/**
|
||||
* 时间
|
||||
*/
|
||||
public final static String SORT_NAME = "time";
|
||||
/**
|
||||
* IP
|
||||
*/
|
||||
public final static String IP = "ip";
|
||||
/**
|
||||
* 级别
|
||||
*/
|
||||
@@ -30,6 +38,9 @@ public class LogMessageConstant {
|
||||
* 日志内容
|
||||
*/
|
||||
public final static String FIELD_MESSAGE = "message";
|
||||
/**
|
||||
* tlogTraceId
|
||||
*/
|
||||
public final static String FIELD_TRACEID = "tlogTraceId";
|
||||
// 定义颜色值
|
||||
/**
|
||||
|
||||
@@ -20,9 +20,13 @@ import org.nl.common.utils.YmlConfigFileUtil;
|
||||
import org.wltea.analyzer.lucene.IKAnalyzer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class LuceneAppender extends AppenderBase<ILoggingEvent> {
|
||||
|
||||
@@ -61,18 +65,43 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
|
||||
Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
|
||||
Document doc = new Document();
|
||||
long timeStamp = event.getTimeStamp();
|
||||
// 获取本机的IP地址
|
||||
String ipAddress = "-";
|
||||
try {
|
||||
ipAddress = InetAddress.getLocalHost().getHostAddress();
|
||||
} catch (UnknownHostException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
String formattedDateTime = DateUtil.format(new java.util.Date(timeStamp), "yyyy-MM-dd HH:mm:ss.SSS");
|
||||
doc.add(new LongPoint(LogMessageConstant.SORT_NAME, timeStamp));
|
||||
doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, timeStamp));
|
||||
doc.add(new StringField(LogMessageConstant.FIELD_LEVEL, event.getLevel().toString(), Field.Store.YES));
|
||||
doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, formattedDateTime, Field.Store.YES));
|
||||
doc.add(new StoredField(LogMessageConstant.FIELD_CLASS_NAME, event.getLoggerName()));
|
||||
doc.add(new StoredField(LogMessageConstant.IP, ipAddress));
|
||||
doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName()));
|
||||
if (ObjectUtil.isNotEmpty(mdcPropertyMap) && ObjectUtil.isNotEmpty(mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID))) {
|
||||
String traceId = mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID);
|
||||
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId, Field.Store.YES));
|
||||
doc.add(new StringField(LogMessageConstant.LABEL, ObjectUtil.isNotEmpty(mdcPropertyMap.get("tag_name"))
|
||||
? mdcPropertyMap.get("tag_name") : "-", Field.Store.YES));
|
||||
} else {
|
||||
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID", Field.Store.YES));
|
||||
// 定义正则表达式,匹配17位数字
|
||||
String regex = "\\d{17}";
|
||||
// 创建 Pattern 对象
|
||||
Pattern pattern = Pattern.compile(regex);
|
||||
// 创建 Matcher 对象
|
||||
Matcher matcher = pattern.matcher(message);
|
||||
String matchedNumber = null;
|
||||
// 查找匹配的数字
|
||||
while (matcher.find()) {
|
||||
matchedNumber = matcher.group();
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(matchedNumber)) {
|
||||
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, matchedNumber, Field.Store.YES));
|
||||
} else {
|
||||
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID", Field.Store.YES));
|
||||
}
|
||||
}
|
||||
doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, message, Field.Store.YES));
|
||||
try {
|
||||
|
||||
@@ -92,17 +92,20 @@ public class Searcher {
|
||||
whereJson.get(LogMessageConstant.FIELD_LEVEL).toString()));
|
||||
booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
|
||||
}
|
||||
docs = searcher.search(booleanQueryBuilder.build(), end, sort);
|
||||
List<String> list = new ArrayList<>();
|
||||
TopFieldCollector collector = TopFieldCollector.create(sort, 20000, 0);
|
||||
searcher.search(booleanQueryBuilder.build(), collector);
|
||||
docs = collector.topDocs(pageNum*pageSize, pageSize);
|
||||
ScoreDoc[] scoreDocs = docs.scoreDocs;
|
||||
if (end > docs.totalHits.value) {
|
||||
end = (int) docs.totalHits.value;
|
||||
}
|
||||
int totalSize = collector.getTotalHits();
|
||||
|
||||
for (int i = start; i < end; i++) {
|
||||
ScoreDoc scoreDoc = scoreDocs[i];
|
||||
for (ScoreDoc scoreDoc : scoreDocs) {
|
||||
Document doc = reader.document(scoreDoc.doc);
|
||||
String logInfo = LogMessageConstant.COLOR_YELLOW + doc.get(LogMessageConstant.FIELD_TRACEID) +
|
||||
String logInfo = LogMessageConstant.COLOR_CYAN + doc.get(LogMessageConstant.LABEL) +
|
||||
LogMessageConstant.COLOR_RESET + " - " +
|
||||
LogMessageConstant.COLOR_BLUE + doc.get(LogMessageConstant.IP) +
|
||||
LogMessageConstant.COLOR_RESET + " - " +
|
||||
LogMessageConstant.COLOR_YELLOW + doc.get(LogMessageConstant.FIELD_TRACEID) +
|
||||
LogMessageConstant.COLOR_RESET + " - " +
|
||||
LogMessageConstant.COLOR_RED + doc.get(LogMessageConstant.FIELD_TIMESTAMP) +
|
||||
LogMessageConstant.COLOR_RESET + " - " +
|
||||
@@ -118,7 +121,7 @@ public class Searcher {
|
||||
reader.close();
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("content", list);
|
||||
jo.put("totalElements", docs.totalHits.value);
|
||||
jo.put("totalElements", totalSize);
|
||||
return jo;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,9 +11,7 @@ import org.dromara.dynamictp.core.monitor.collector.AbstractCollector;
|
||||
public class TestCollector extends AbstractCollector {
|
||||
@Override
|
||||
public void collect(ThreadPoolStats threadPoolStats) {
|
||||
if (threadPoolStats.getPoolName().equals("el-thread")) {
|
||||
System.out.println("ssssssssssssssss:" + threadPoolStats);
|
||||
}
|
||||
// System.out.println("ssssssssssssssss:" + threadPoolStats);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -36,7 +36,6 @@ class SysParamController {
|
||||
|
||||
@GetMapping
|
||||
@Log("查询系统参数")
|
||||
|
||||
//@SaCheckPermission("param:list")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
|
||||
return new ResponseEntity<>(TableDataInfo.build(paramService.queryPage(whereJson, page)), HttpStatus.OK);
|
||||
@@ -44,7 +43,6 @@ class SysParamController {
|
||||
|
||||
@PostMapping
|
||||
@Log("新增系统参数")
|
||||
|
||||
//@SaCheckPermission("param:add")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody Param param) {
|
||||
paramService.create(param);
|
||||
@@ -53,7 +51,6 @@ class SysParamController {
|
||||
|
||||
@PutMapping
|
||||
@Log("修改系统参数")
|
||||
|
||||
//@SaCheckPermission("param:edit")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody Param param) {
|
||||
paramService.update(param);
|
||||
@@ -61,7 +58,6 @@ class SysParamController {
|
||||
}
|
||||
|
||||
@Log("删除系统参数")
|
||||
|
||||
//@SaCheckPermission("param:del")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
||||
@@ -72,7 +68,6 @@ class SysParamController {
|
||||
|
||||
@PostMapping("/getValueByCode/{code}")
|
||||
@Log("根据编码获取值")
|
||||
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> getValueByCode(@PathVariable String code) {
|
||||
return new ResponseEntity<>(paramService.findByCode(code), HttpStatus.CREATED);
|
||||
|
||||
@@ -17,10 +17,11 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
public class LuceneServiceImpl implements LuceneService {
|
||||
|
||||
//日志索引目录
|
||||
/**
|
||||
* 日志索引目录
|
||||
*/
|
||||
@Value("${lucene.index.path}")
|
||||
private String luceneUrl;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getAll(JSONObject whereJson) {
|
||||
JSONObject jo = new JSONObject();
|
||||
|
||||
@@ -3,6 +3,10 @@ package org.nl.system.service.param.impl;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alicp.jetcache.anno.CachePenetrationProtect;
|
||||
import com.alicp.jetcache.anno.CacheType;
|
||||
import com.alicp.jetcache.anno.CacheUpdate;
|
||||
import com.alicp.jetcache.anno.Cached;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -66,6 +70,7 @@ public class SysParamServiceImpl extends ServiceImpl<SysParamMapper, Param> impl
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheUpdate(name="paramCache-", key="#param.code", value="#param")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(Param param) {
|
||||
Param paramObj = paramMapper.selectById(param.getId());
|
||||
@@ -90,6 +95,8 @@ public class SysParamServiceImpl extends ServiceImpl<SysParamMapper, Param> impl
|
||||
}
|
||||
|
||||
@Override
|
||||
@CachePenetrationProtect
|
||||
@Cached(name="paramCache-",key = "#code", expire = 3600, cacheType = CacheType.REMOTE)
|
||||
public Param findByCode(String code) {
|
||||
QueryWrapper<Param> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("code", code);
|
||||
|
||||
@@ -9,9 +9,10 @@ import org.springframework.scheduling.quartz.AdaptableJobFactory;
|
||||
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* 定时任务配置
|
||||
*
|
||||
* @author /
|
||||
* @date 2019-01-07
|
||||
*/
|
||||
@@ -42,17 +43,24 @@ public class QuartzConfig {
|
||||
|
||||
/**
|
||||
* 注入scheduler到spring
|
||||
*
|
||||
* @param quartzJobFactory /
|
||||
* @return Scheduler
|
||||
* @throws Exception /
|
||||
*/
|
||||
@Bean(name = "scheduler")
|
||||
public Scheduler scheduler(QuartzJobFactory quartzJobFactory) throws Exception {
|
||||
SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
|
||||
SchedulerFactoryBean factoryBean=new SchedulerFactoryBean();
|
||||
|
||||
//https://blog.csdn.net/YuChenIT/article/details/133344898
|
||||
Properties prop = new Properties();
|
||||
prop.put("org.quartz.threadPool.threadCount", "9");
|
||||
factoryBean.setWaitForJobsToCompleteOnShutdown(true);
|
||||
|
||||
factoryBean.setQuartzProperties(prop);
|
||||
|
||||
factoryBean.setJobFactory(quartzJobFactory);
|
||||
factoryBean.afterPropertiesSet();
|
||||
Scheduler scheduler = factoryBean.getScheduler();
|
||||
Scheduler scheduler=factoryBean.getScheduler();
|
||||
scheduler.start();
|
||||
return scheduler;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.system.service.quartz.utils;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.yomahub.tlog.task.quartz.TLogQuartzJobBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.utils.RedisUtils;
|
||||
import org.nl.common.utils.ThrowableUtil;
|
||||
@@ -32,7 +33,7 @@ import java.util.concurrent.ThreadPoolExecutor;
|
||||
@SuppressWarnings({"unchecked", "all"})
|
||||
@Slf4j
|
||||
@DisallowConcurrentExecution
|
||||
public class ExecutionJob extends QuartzJobBean {
|
||||
public class ExecutionJob extends TLogQuartzJobBean {
|
||||
|
||||
/**
|
||||
* 该处仅供参考
|
||||
@@ -41,8 +42,9 @@ public class ExecutionJob extends QuartzJobBean {
|
||||
@Qualifier("threadPoolExecutor")
|
||||
private ThreadPoolExecutor EXECUTOR;
|
||||
|
||||
|
||||
@Override
|
||||
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
|
||||
public void executeTask(JobExecutionContext context) throws JobExecutionException {
|
||||
SysQuartzJob quartzJob = (SysQuartzJob) context.getMergedJobDataMap().get(SysQuartzJob.JOB_KEY);
|
||||
// 获取spring bean
|
||||
ISysQuartzJobService quartzJobService = SpringContextHolder.getBean(SysQuartzJobServiceImpl.class);
|
||||
|
||||
@@ -43,7 +43,6 @@ public class MdBaseMaterialController {
|
||||
|
||||
@PostMapping
|
||||
@Log("新增物料基础信息")
|
||||
|
||||
//@SaCheckPermission("@el.check('mdBaseMaterial:add')")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody MdBaseMaterial entity) {
|
||||
mdBaseMaterialService.create(entity);
|
||||
@@ -52,7 +51,6 @@ public class MdBaseMaterialController {
|
||||
|
||||
@PutMapping
|
||||
@Log("修改物料基础信息")
|
||||
|
||||
//@SaCheckPermission("@el.check('mdBaseMaterial:edit')")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody MdBaseMaterial entity) {
|
||||
mdBaseMaterialService.update(entity);
|
||||
@@ -60,7 +58,6 @@ public class MdBaseMaterialController {
|
||||
}
|
||||
|
||||
@Log("删除物料基础信息")
|
||||
|
||||
//@SaCheckPermission("@el.check('mdBaseMaterial:del')")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
||||
@@ -70,7 +67,6 @@ public class MdBaseMaterialController {
|
||||
|
||||
@PostMapping("/synchronize")
|
||||
@Log("物料同步")
|
||||
|
||||
@Limit(period = 1, count = 1)
|
||||
//@SaCheckPermission("materialtype:list")
|
||||
public ResponseEntity<Object> synchronize(@RequestBody Map whereJson) {
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -73,6 +74,7 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
|
||||
@Override
|
||||
public void synchronizeMaterialInfo() {
|
||||
MDC.put("system", "log");
|
||||
log.info("同步物料开始");
|
||||
// 获取lms数据库中的最后获取时间
|
||||
// LambdaQueryWrapper<MdBaseMaterial> lmsMaterialTabQuery = new QueryWrapper<MdBaseMaterial>().lambda();
|
||||
|
||||
@@ -62,7 +62,6 @@ public class PdmBdWorkorderController {
|
||||
|
||||
@GetMapping("/materials")
|
||||
@Log("查询物料基础信息")
|
||||
|
||||
//@SaCheckPermission("@el.check('mdBaseMaterial:list')")
|
||||
public ResponseEntity<Object> queryMaterials(MdBaseMaterialQuery whereJson, PageQuery page) {
|
||||
return new ResponseEntity<>(TableDataInfo.build(mdBaseMaterialService.queryByInventory(whereJson, page)), HttpStatus.OK);
|
||||
|
||||
@@ -138,6 +138,7 @@ public class PdmBdWorkorder implements Serializable {
|
||||
private Integer qualified_qty;
|
||||
|
||||
private Integer unqualified_qty;
|
||||
private Integer priority;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String material_name;
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.sch.group.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -65,6 +66,9 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
entity.setUpdate_id(currentUserId);
|
||||
entity.setUpdate_name(nickName);
|
||||
entity.setUpdate_time(now);
|
||||
if (ObjectUtil.isNotEmpty(entity.getOut_kiln_time())) {
|
||||
entity.setIs_firing(true);
|
||||
}
|
||||
vehiclematerialgroupMapper.insert(entity);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
WHERE (p.ing_task_code = '' OR p.ing_task_code IS NULL)
|
||||
AND p.is_used = 1
|
||||
AND p.point_status = '3'
|
||||
AND vg.is_firing = true
|
||||
AND vg.material_id = #{materialId}
|
||||
AND TIMESTAMPDIFF(HOUR, vg.instorage_time, NOW()) >= ma.cooling_time
|
||||
AND p.region_code IN
|
||||
|
||||
@@ -1,25 +1,15 @@
|
||||
server:
|
||||
tomcat:
|
||||
relaxed-query-chars: [ '|','{','}','[',']' ] #字符问题:https://blog.csdn.net/CanYue_Yi/article/details/109182577
|
||||
relaxed-path-chars: [ '|','{','}','[',']' ] #字符问题: https://blog.csdn.net/weixin_41996632/article/details/90715118
|
||||
spring:
|
||||
dynamic:
|
||||
tp:
|
||||
enabled: true # 是否启用 dynamictp,默认true
|
||||
enabledCollect: true # 是否开启监控指标采集,默认true
|
||||
collectorTypes: logging,test_collect # 监控数据采集器类型(logging | micrometer | internal_logging),默认micrometer
|
||||
logPath: C:\log\lms # 监控日志数据路径,默认 ${user.home}/logs,采集类型非logging不用配置
|
||||
monitorInterval: 8
|
||||
tomcatTp: # tomcat webserver 线程池配置
|
||||
threadPoolAliasName: tomcat 线程池 # 线程池别名,可选
|
||||
corePoolSize: 100
|
||||
maximumPoolSize: 200
|
||||
keepAliveTime: 60
|
||||
runTimeout: 200
|
||||
queueTimeout: 100
|
||||
datasource:
|
||||
druid:
|
||||
initial-size: 5 #初始化时建立物理连接的个数
|
||||
min-idle: 15 #最小连接池数量
|
||||
maxActive: 30 #最大连接池数量
|
||||
maxWait: 3000 #获取连接时最大等待时间,单位毫秒
|
||||
#申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
|
||||
# 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
|
||||
test-while-idle: true
|
||||
time-between-eviction-runs-millis: 300000 #既作为检测的间隔时间又作为test-while-idle执行的依据
|
||||
min-evictable-idle-time-millis: 900000 #销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
|
||||
@@ -63,16 +53,45 @@ spring:
|
||||
redis:
|
||||
repositories:
|
||||
enabled: false
|
||||
#
|
||||
# #配置 Jpa
|
||||
# jpa:
|
||||
# hibernate:
|
||||
# ddl-auto: none
|
||||
# open-in-view: true
|
||||
# properties:
|
||||
# hibernate:
|
||||
# dialect: org.hibernate.dialect.MySQL5InnoDBDialect
|
||||
# enable_lazy_load_no_trans: true
|
||||
dynamic:
|
||||
tp:
|
||||
enabled: true # 是否启用 dynamictp,默认true
|
||||
enabledCollect: true # 是否开启监控指标采集,默认true
|
||||
enabled-banner: false
|
||||
collectorTypes: logging,test_collect # 监控数据采集器类型(logging | micrometer | internal_logging),默认micrometer
|
||||
logPath: C:\log\lms # 监控日志数据路径,默认 ${user.home}/logs,采集类型非logging不用配置
|
||||
monitorInterval: 8
|
||||
tomcatTp: # tomcat webserver 线程池配置
|
||||
threadPoolAliasName: tomcat 线程池 # 线程池别名,可选
|
||||
corePoolSize: 100
|
||||
maximumPoolSize: 200
|
||||
keepAliveTime: 60
|
||||
runTimeout: 200
|
||||
queueTimeout: 100
|
||||
notifyItems: # 报警项,不配置自动会按默认值配置(变更通知、容量报警、活性报警、拒绝报警、任务超时报警)
|
||||
- type: change
|
||||
enabled: true
|
||||
|
||||
- type: capacity # 队列容量使用率,报警项类型,查看源码 NotifyTypeEnum枚举类
|
||||
enabled: true
|
||||
threshold: 80 # 报警阈值,默认70,意思是队列使用率达到70%告警
|
||||
interval: 120 # 报警间隔(单位:s),默认120
|
||||
|
||||
- type: liveness # 线程池活性
|
||||
enabled: true
|
||||
threshold: 80 # 报警阈值,默认 70,意思是活性达到70%告警
|
||||
|
||||
- type: reject # 触发任务拒绝告警
|
||||
enabled: true
|
||||
threshold: 100 # 默认阈值10
|
||||
|
||||
- type: run_timeout # 任务执行超时告警
|
||||
enabled: true
|
||||
threshold: 100 # 默认阈值10
|
||||
|
||||
- type: queue_timeout # 任务排队超时告警
|
||||
enabled: true
|
||||
threshold: 100 # 默认阈值10
|
||||
task:
|
||||
pool:
|
||||
# 核心线程池大小
|
||||
@@ -147,3 +166,24 @@ mybatis-plus:
|
||||
lucene:
|
||||
index:
|
||||
path: D:\lucene\index
|
||||
|
||||
jetcache:
|
||||
statIntervalMinutes: 15
|
||||
areaInCacheName: false
|
||||
local:
|
||||
default:
|
||||
type: linkedhashmap
|
||||
keyConvertor: fastjson
|
||||
remote:
|
||||
default:
|
||||
type: redis
|
||||
keyConvertor: fastjson2
|
||||
broadcastChannel: projectA
|
||||
valueEncoder: java
|
||||
valueDecoder: java
|
||||
poolConfig:
|
||||
minIdle: 5 # 连接池中的最小空闲连接数
|
||||
maxIdle: 20 # 连接池中的最大空闲连接数
|
||||
maxTotal: 50 # 连接池中的最大连接数
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
|
||||
@@ -51,7 +51,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
</appender>
|
||||
<appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" >
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>INFO</level>
|
||||
<level>DEBUG</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
@@ -75,6 +75,26 @@ https://juejin.cn/post/6844903775631572999
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</root>
|
||||
<logger name="com.baomidou.mybatisplus.core.MybatisConfiguration" level="ERROR" additivity="false">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.redisson.command.RedisExecutor" level="ERROR" additivity="false">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.reflections.Reflections" level="ERROR" additivity="false">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.redisson.connection.ClientConnectionsEntry" level="ERROR" additivity="false">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.mybatis.spring.mapper.ClassPathMapperScanner" level="ERROR" additivity="false">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.springframework" level="ERROR" additivity="true">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
|
||||
Reference in New Issue
Block a user