rev:添加Tlog与动态线程池监控,去掉前端多余文件
This commit is contained in:
@@ -48,10 +48,16 @@
|
||||
<version>${hutool.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 日志链路追踪 https://tlog.yomahub.com/pages/f62a84/#%E5%90%8C%E6%AD%A5%E6%97%A5%E5%BF%97-->
|
||||
<dependency>
|
||||
<groupId>com.yomahub</groupId>
|
||||
<artifactId>tlog-all-spring-boot-starter</artifactId>
|
||||
<version>1.5.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara.dynamictp</groupId>
|
||||
<artifactId>dynamic-tp-spring-boot-starter-adapter-webserver</artifactId>
|
||||
<version>1.1.6.1</version>
|
||||
<version>1.1.7</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
|
||||
import com.alicp.jetcache.anno.config.EnableMethodCache;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.dromara.dynamictp.core.spring.EnableDynamicTp;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.config.thread.ThreadPoolExecutorUtil;
|
||||
@@ -36,6 +37,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@EnableMethodCache(basePackages = "org.nl")
|
||||
@EnableCreateCacheAnnotation
|
||||
@MapperScan("org.nl.**.mapper")
|
||||
@EnableDynamicTp
|
||||
public class AppRun {
|
||||
|
||||
public static void main(String[] args) {
|
||||
@@ -48,14 +50,6 @@ public class AppRun {
|
||||
return new SpringContextHolder();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ServletWebServerFactory webServerFactory() {
|
||||
TomcatServletWebServerFactory fa = new TomcatServletWebServerFactory();
|
||||
fa.addConnectorCustomizers(connector -> connector.setProperty("relaxedQueryChars", "[]{}"));
|
||||
return fa;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 访问首页提示
|
||||
|
||||
@@ -2,8 +2,8 @@ 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.config.thread.ThreadPoolExecutorUtil;
|
||||
import org.nl.common.utils.RedisUtils;
|
||||
import org.nl.common.utils.ThrowableUtil;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
@@ -18,7 +18,6 @@ import org.quartz.JobExecutionException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.quartz.QuartzJobBean;
|
||||
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
@@ -32,7 +31,7 @@ import java.util.concurrent.ThreadPoolExecutor;
|
||||
@SuppressWarnings({"unchecked", "all"})
|
||||
@Slf4j
|
||||
@DisallowConcurrentExecution
|
||||
public class ExecutionJob extends QuartzJobBean {
|
||||
public class ExecutionJob extends TLogQuartzJobBean {
|
||||
|
||||
/**
|
||||
* 该处仅供参考
|
||||
@@ -41,8 +40,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);
|
||||
@@ -52,7 +52,7 @@ public class ExecutionJob extends QuartzJobBean {
|
||||
String uuid = quartzJob.getUuid();
|
||||
|
||||
SysQuartzLog logDto = new SysQuartzLog();
|
||||
logDto.setLog_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
logDto.setLog_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
logDto.setJob_name(quartzJob.getJob_name());
|
||||
logDto.setBean_name(quartzJob.getBean_name());
|
||||
logDto.setMethod_name(quartzJob.getMethod_name());
|
||||
@@ -61,8 +61,8 @@ public class ExecutionJob extends QuartzJobBean {
|
||||
logDto.setCron_expression(quartzJob.getCron_expression());
|
||||
try {
|
||||
// 执行任务
|
||||
System.out.println("--------------------------------------------------------------");
|
||||
System.out.println("任务开始执行,任务名称:" + quartzJob.getJob_name());
|
||||
//System.out.println("--------------------------------------------------------------");
|
||||
//System.out.println("任务开始执行,任务名称:" + quartzJob.getJob_name());
|
||||
QuartzRunnable task = new QuartzRunnable(quartzJob.getBean_name(), quartzJob.getMethod_name(),
|
||||
quartzJob.getParams());
|
||||
Future<?> future = EXECUTOR.submit(task);
|
||||
@@ -74,8 +74,8 @@ public class ExecutionJob extends QuartzJobBean {
|
||||
}
|
||||
// 任务状态
|
||||
logDto.setIs_success(true);
|
||||
System.out.println("任务执行完毕,任务名称:" + quartzJob.getJob_name() + ", 执行时间:" + times + "毫秒");
|
||||
System.out.println("--------------------------------------------------------------");
|
||||
// System.out.println("任务执行完毕,任务名称:" + quartzJob.getJob_name() + ", 执行时间:" + times + "毫秒");
|
||||
//System.out.println("--------------------------------------------------------------");
|
||||
// 判断是否存在子任务
|
||||
if (StrUtil.isNotEmpty(quartzJob.getSub_task())) {
|
||||
String[] tasks = quartzJob.getSub_task().split("[,,]");
|
||||
@@ -86,8 +86,8 @@ public class ExecutionJob extends QuartzJobBean {
|
||||
if (StrUtil.isNotEmpty(uuid)) {
|
||||
redisUtils.set(uuid, false);
|
||||
}
|
||||
System.out.println("任务执行失败,任务名称:" + quartzJob.getJob_name());
|
||||
System.out.println("--------------------------------------------------------------");
|
||||
//System.out.println("任务执行失败,任务名称:" + quartzJob.getJob_name());
|
||||
// System.out.println("--------------------------------------------------------------");
|
||||
long times = System.currentTimeMillis() - startTime;
|
||||
logDto.setTime(times);
|
||||
// 任务状态 0:成功 1:失败
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
package org.nl.system.service.quartz.utils;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.yomahub.tlog.core.thread.TLogInheritableTask;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
/**
|
||||
* 执行定时任务
|
||||
*
|
||||
* @author /
|
||||
*/
|
||||
@Slf4j
|
||||
public class QuartzRunnable implements Callable {
|
||||
public class QuartzRunnable extends TLogInheritableTask {
|
||||
|
||||
private final Object target;
|
||||
private final Method method;
|
||||
@@ -31,14 +33,15 @@ public class QuartzRunnable implements Callable {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
@Override
|
||||
public Object call() throws Exception {
|
||||
public void runTask() {
|
||||
ReflectionUtils.makeAccessible(method);
|
||||
if (StrUtil.isNotEmpty(params)) {
|
||||
method.invoke(target, params);
|
||||
} else {
|
||||
method.invoke(target);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,34 @@
|
||||
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:
|
||||
freemarker:
|
||||
check-template-location: false
|
||||
profiles:
|
||||
active: prod
|
||||
active: dev
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
data:
|
||||
redis:
|
||||
repositories:
|
||||
enabled: false
|
||||
dynamic:
|
||||
tp:
|
||||
enabled: true # 是否启用 dynamictp,默认true
|
||||
enabledBanner: false # 是否启用 控制台banner,默认true
|
||||
enabledCollect: true # 是否开启监控指标采集,默认true
|
||||
collectorTypes: logging # 监控数据采集器类型(logging | micrometer | internal_logging),默认micrometer
|
||||
logPath: d:\log\lms # 监控日志数据路径,默认 ${user.home}/logs,采集类型非logging不用配置
|
||||
monitorInterval: 8
|
||||
tomcatTp: # tomcat webserver 线程池配置
|
||||
threadPoolAliasName: tomcat 线程池 # 线程池别名,可选
|
||||
corePoolSize: 12
|
||||
tryInterrupt: true
|
||||
maximumPoolSize: 50
|
||||
keepAliveTime: 60
|
||||
runTimeout: 10000
|
||||
queueTimeout: 100
|
||||
|
||||
#配置 Jpa
|
||||
jpa:
|
||||
@@ -93,3 +113,5 @@ mybatis-plus:
|
||||
lucene:
|
||||
index:
|
||||
path: D:\lucene\index
|
||||
tlog:
|
||||
enable-invoke-time-print: true
|
||||
@@ -21,9 +21,10 @@ https://juejin.cn/post/6844903775631572999
|
||||
<!-- <include resource="log/XgAgvDeviceDriver.xml"/>-->
|
||||
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<!-- 控制台高亮-->
|
||||
<withJansi>true</withJansi>
|
||||
<encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
|
||||
<pattern>${log.pattern}</pattern>
|
||||
<charset>${log.charset}</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
@@ -49,7 +50,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
</appender>
|
||||
|
||||
<!--异步到文件-->
|
||||
<appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||
<appender name="asyncFileAppender" class="com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender">
|
||||
<discardingThreshold>0</discardingThreshold>
|
||||
<queueSize>500</queueSize>
|
||||
<appender-ref ref="FILE"/>
|
||||
@@ -57,7 +58,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
<!--开发环境:打印控制台-->
|
||||
<springProfile name="dev">
|
||||
<root level="debug">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</root>
|
||||
<logger name="org.springframework" level="ERROR" additivity="false">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
|
||||
Reference in New Issue
Block a user