第一次提交
This commit is contained in:
commit
0f6436e8fe
11
docker-compose.yaml
Normal file
11
docker-compose.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
version: '3.4'
|
||||
services:
|
||||
sql-runner:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
restart: always
|
||||
container_name: sql-runner
|
||||
image: sql-runner:latest
|
||||
ports:
|
||||
- "8308:8308"
|
16
dockerfile
Normal file
16
dockerfile
Normal file
@ -0,0 +1,16 @@
|
||||
#ARG instanceid="996sdk-yinqing-registry.cn-hangzhou.cr.aliyuncs.com/default/openjdk"
|
||||
ARG instanceid="registry.cn-hangzhou.aliyuncs.com/yinzhou_docker_hub/openjdk"
|
||||
|
||||
FROM ${instanceid}:8-jdk-alpine
|
||||
|
||||
# 将 JAR 文件复制到容器中
|
||||
COPY ./target/sql_run.jar /opt/sdk/sql_run.jar
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /opt/sdk/
|
||||
|
||||
# 暴露应用程序的端口
|
||||
EXPOSE 8308
|
||||
|
||||
# 运行应用程序
|
||||
ENTRYPOINT ["java", "-jar", "sql_run.jar"]
|
78
pom.xml
Normal file
78
pom.xml
Normal file
@ -0,0 +1,78 @@
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>sdk_996</groupId>
|
||||
<artifactId>sql_run</artifactId>
|
||||
<version>1.0</version>
|
||||
<properties>
|
||||
<java.version>1.8</java.version> <!-- 使用 Java 8 -->
|
||||
<spring-boot.version>2.7.18</spring-boot.version> <!-- Spring Boot 2.7.18 -->
|
||||
<mybatis-plus-boot-starter.version>3.5.9</mybatis-plus-boot-starter.version>
|
||||
<easy-query.version>2.4.14</easy-query.version>
|
||||
<postgresql.version>42.6.0</postgresql.version> <!-- Hologres 驱动 -->
|
||||
<fastjson.version>1.2.58</fastjson.version><!-- 用来包装返回 -->
|
||||
<lombok.version>1.18.8</lombok.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
<version>${mybatis-plus-boot-starter.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||
<version>4.3.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
<version>${postgresql.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<version>${fastjson.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>${lombok.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${artifactId}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
13
src/main/java/sdk_996/SqlRunApplication.java
Normal file
13
src/main/java/sdk_996/SqlRunApplication.java
Normal file
@ -0,0 +1,13 @@
|
||||
package sdk_996;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class SqlRunApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SqlRunApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,93 @@
|
||||
package sdk_996.bean.cnofig;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.postgresql.util.PSQLException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import sdk_996.bean.em.ErrorCode;
|
||||
import sdk_996.bean.exp.FormatValidationException;
|
||||
import sdk_996.bean.exp.SqlException;
|
||||
import sdk_996.bean.vo.ResultVO;
|
||||
|
||||
import java.net.SocketTimeoutException;
|
||||
import java.util.concurrent.CompletionException;
|
||||
|
||||
@ControllerAdvice
|
||||
public class GlobalExceptionHandler {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
|
||||
|
||||
|
||||
@ExceptionHandler(value = {FormatValidationException.class})
|
||||
@ResponseBody
|
||||
public ResultVO formatValidationException(FormatValidationException ex) {
|
||||
logger.info("format validation exception: {}", ex);
|
||||
return ResultVO.error(ErrorCode.PARAM_ERROR);
|
||||
}
|
||||
|
||||
|
||||
@ExceptionHandler(value = {SqlException.class, CompletionException.class})
|
||||
@ResponseBody
|
||||
public ResultVO handleSqlException(SqlException ex) {
|
||||
Exception cause = ex.getEx();
|
||||
String key_v = ex.getKey_v();
|
||||
|
||||
// 根据具体的异常类型做出响应
|
||||
if (cause.getCause().getCause() instanceof SocketTimeoutException) {
|
||||
return handleTimeoutException(key_v);
|
||||
} else if (cause.getCause() instanceof PSQLException) {
|
||||
return handleSqlSyntaxException(key_v, cause);
|
||||
} else {
|
||||
return handleGenericSqlException(key_v, cause);
|
||||
}
|
||||
}
|
||||
|
||||
private ResultVO handleTimeoutException(String key_v) {
|
||||
logger.error("SQL query timeout for key: {}", key_v);
|
||||
JSONObject errorDetail = createErrorDetail(key_v, ErrorCode.SQL_TIMEOUT.getMessage(), "");
|
||||
return ResultVO.error_sql(ErrorCode.SQL_TIMEOUT, errorDetail);
|
||||
}
|
||||
|
||||
private ResultVO handleSqlSyntaxException(String sqlKey, Exception cause) {
|
||||
logger.error("SQL syntax error for key: {}", sqlKey, cause);
|
||||
JSONObject errorDetail = createErrorDetail(sqlKey, ErrorCode.SQL_ERROR.getMessage(), cause.getMessage());
|
||||
return ResultVO.error_sql(ErrorCode.SQL_ERROR, errorDetail);
|
||||
}
|
||||
|
||||
private ResultVO handleGenericSqlException(String sqlKey, Exception cause) {
|
||||
logger.error("SQL execution error for key: {}", sqlKey, cause);
|
||||
return ResultVO.error(ErrorCode.SQL_EXECUTE_ERROR);
|
||||
}
|
||||
|
||||
private JSONObject createErrorDetail(String sqlKey, String Message, String errorMessage) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("sql_key:sql", sqlKey);
|
||||
jsonObject.put(Message, errorMessage);
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
@ExceptionHandler(value = ArithmeticException.class)
|
||||
@ResponseBody
|
||||
public ResultVO handleArithmeticException(ArithmeticException ex) {
|
||||
logger.error("Arithmetic exception occurred: ", ex);
|
||||
return ResultVO.error(ErrorCode.CODE_ERROR);
|
||||
}
|
||||
|
||||
@ExceptionHandler(value = NullPointerException.class)
|
||||
@ResponseBody
|
||||
public ResultVO handleNullPointerException(NullPointerException ex) {
|
||||
logger.error("NullPointerException occurred: ", ex);
|
||||
return ResultVO.error(ErrorCode.NULL_POINTER_ERROR);
|
||||
}
|
||||
|
||||
@ExceptionHandler(value = Exception.class)
|
||||
@ResponseBody
|
||||
public ResultVO handleGeneralException(Exception ex) {
|
||||
logger.error("General exception occurred: ", ex);
|
||||
return ResultVO.error(ErrorCode.RUNTIME_EXCEPTION);
|
||||
}
|
||||
}
|
35
src/main/java/sdk_996/bean/em/ErrorCode.java
Normal file
35
src/main/java/sdk_996/bean/em/ErrorCode.java
Normal file
@ -0,0 +1,35 @@
|
||||
package sdk_996.bean.em;
|
||||
|
||||
public enum ErrorCode {
|
||||
|
||||
SUCCESS(200, "成功"),
|
||||
SQL_ERROR(301, "SQL异常,请检查 SQL 语句"),
|
||||
SQL_TIMEOUT(302, "SQL查询超时异常"),
|
||||
SQL_EXECUTE_ERROR(303, "SQL执行异常"),
|
||||
NULL_POINTER_ERROR(304, "空指针异常"),
|
||||
CODE_ERROR(305, "代码运行异常,请查看报错信息"),
|
||||
INTERNAL_ERROR(306, "内部异常"),
|
||||
|
||||
PARAM_NULL(310, "参数为空"),
|
||||
PARAM_ERROR(311, "参数有误,检查请求参数后重试."),
|
||||
DATA_EMPTY(312, "此时间段内无数据"),
|
||||
RUNTIME_EXCEPTION(500, "服务运行异常");
|
||||
|
||||
private final Integer code;
|
||||
private final String message;
|
||||
|
||||
ErrorCode(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package sdk_996.bean.exp;
|
||||
|
||||
public class FormatValidationException extends RuntimeException{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Exception ex;
|
||||
|
||||
public FormatValidationException(Exception ex) {
|
||||
this.ex = ex;
|
||||
}
|
||||
}
|
18
src/main/java/sdk_996/bean/exp/SqlException.java
Normal file
18
src/main/java/sdk_996/bean/exp/SqlException.java
Normal file
@ -0,0 +1,18 @@
|
||||
package sdk_996.bean.exp;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SqlException extends RuntimeException {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String key_v;
|
||||
private Exception ex;
|
||||
|
||||
|
||||
public SqlException(String key_v, Exception ex) {
|
||||
this.key_v = key_v;
|
||||
this.ex = ex;
|
||||
}
|
||||
|
||||
}
|
60
src/main/java/sdk_996/bean/vo/ResultVO.java
Normal file
60
src/main/java/sdk_996/bean/vo/ResultVO.java
Normal file
@ -0,0 +1,60 @@
|
||||
package sdk_996.bean.vo;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
import sdk_996.bean.em.ErrorCode;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class ResultVO {
|
||||
private Integer code;
|
||||
private Object message;
|
||||
private Object data;
|
||||
private LocalDateTime currentTime; // 当前时间字段
|
||||
|
||||
public ResultVO() {
|
||||
this.currentTime = LocalDateTime.now(); // 在构造函数中设置当前时间
|
||||
this.setCode(200); // 默认成功状态
|
||||
this.setMessage("成功"); // 默认成功消息
|
||||
}
|
||||
|
||||
// 提供一个静态方法来快速创建成功响应
|
||||
public static ResultVO success() {
|
||||
return new ResultVO();
|
||||
}
|
||||
|
||||
// 提供一个静态方法来快速创建带有自定义消息的成功响应
|
||||
public static ResultVO success(JSONObject data) {
|
||||
ResultVO resultVO = new ResultVO();
|
||||
resultVO.setData(data);
|
||||
return resultVO;
|
||||
}
|
||||
|
||||
// 提供一个静态方法来快速创建带有错误码和消息的响应
|
||||
public static ResultVO error(ErrorCode errorCode) {
|
||||
ResultVO resultVO = new ResultVO();
|
||||
resultVO.setCode(errorCode.getCode());
|
||||
resultVO.setMessage(errorCode.getMessage());
|
||||
return resultVO;
|
||||
}
|
||||
|
||||
|
||||
public static ResultVO error_sql(ErrorCode errorCode, JSONObject msg) {
|
||||
ResultVO resultVO = new ResultVO();
|
||||
resultVO.setCode(errorCode.getCode());
|
||||
resultVO.setMessage(msg);
|
||||
return resultVO;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
ResultVO resultVO = ResultVO.error(ErrorCode.SQL_ERROR);
|
||||
System.out.println(resultVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
// 以json格式打印返回
|
||||
return JSONObject.toJSONString(this);
|
||||
}
|
||||
}
|
21
src/main/java/sdk_996/controller/SqlExecuteController.java
Normal file
21
src/main/java/sdk_996/controller/SqlExecuteController.java
Normal file
@ -0,0 +1,21 @@
|
||||
package sdk_996.controller;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import sdk_996.bean.vo.ResultVO;
|
||||
import sdk_996.service.SqlExecuteService;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api")
|
||||
public class SqlExecuteController {
|
||||
|
||||
@Autowired
|
||||
private SqlExecuteService sqlExecuteService;
|
||||
|
||||
@PostMapping("/sql-query")
|
||||
public ResultVO sqlQuery(@RequestBody String sql) {
|
||||
return ResultVO.success(sqlExecuteService.performCustomQuery(sql));
|
||||
}
|
||||
|
||||
|
||||
}
|
17
src/main/java/sdk_996/mapper/SqlExecuteMapper.java
Normal file
17
src/main/java/sdk_996/mapper/SqlExecuteMapper.java
Normal file
@ -0,0 +1,17 @@
|
||||
package sdk_996.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Mapper
|
||||
public interface SqlExecuteMapper extends BaseMapper<Object> {
|
||||
|
||||
@Select("${value}")
|
||||
List<Map<String, Object>> sqlQuery(String value);
|
||||
|
||||
|
||||
}
|
86
src/main/java/sdk_996/service/SqlExecuteService.java
Normal file
86
src/main/java/sdk_996/service/SqlExecuteService.java
Normal file
@ -0,0 +1,86 @@
|
||||
package sdk_996.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import sdk_996.bean.exp.FormatValidationException;
|
||||
import sdk_996.mapper.SqlExecuteMapper;
|
||||
import sdk_996.bean.exp.SqlException;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class SqlExecuteService {
|
||||
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(SqlExecuteService.class);
|
||||
|
||||
@Autowired
|
||||
private SqlExecuteMapper sqlExecuteMapper;
|
||||
|
||||
public JSONObject performCustomQuery(String sqlstr) {
|
||||
// 返回的json对象
|
||||
JSONObject returnJsonObject = new JSONObject();
|
||||
JSONObject sqlJsonObject;
|
||||
|
||||
try {
|
||||
// 将SQL字符串转换为JSON对象
|
||||
sqlJsonObject = JSONObject.parseObject(sqlstr);
|
||||
|
||||
} catch (Exception ex) {
|
||||
throw new FormatValidationException(ex);
|
||||
}
|
||||
|
||||
|
||||
// 执行查询操作并处理返回结果
|
||||
List<JSONObject> jsonObjects = query(sqlJsonObject);
|
||||
|
||||
// 遍历jsonObjects,将结果加入到返回的jsonObject
|
||||
for (JSONObject jsonObject : jsonObjects) {
|
||||
jsonObject.forEach(returnJsonObject::put);
|
||||
}
|
||||
|
||||
return returnJsonObject;
|
||||
|
||||
|
||||
}
|
||||
|
||||
private List<JSONObject> query(JSONObject sqlJsonObject) {
|
||||
// 执行所有 SQL 查询的异步任务
|
||||
List<CompletableFuture<JSONObject>> futures = sqlJsonObject.keySet().stream()
|
||||
.map(key -> CompletableFuture.supplyAsync(() -> executeQuery(key, sqlJsonObject.getString(key))))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 等待所有任务完成并收集结果
|
||||
return futures.stream()
|
||||
.map(CompletableFuture::join)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private JSONObject executeQuery(String sqlKey, String sqlStr) {
|
||||
JSONObject result = new JSONObject();
|
||||
try {
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
// 执行 SQL 查询
|
||||
List<Map<String, Object>> resultList = sqlExecuteMapper.sqlQuery(sqlStr);
|
||||
long endTime = System.currentTimeMillis();
|
||||
logger.info("sql执行时长:{}ms 执行sql:{}", (endTime - startTime), sqlStr);
|
||||
|
||||
// 将结果列表转换为 JSONArray
|
||||
JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(resultList));
|
||||
// 执行 SQL 查询并转换为 JSON 字符串
|
||||
result.put(sqlKey, jsonArray);
|
||||
} catch (Exception ex) {
|
||||
throw new SqlException(sqlKey + ": " + sqlStr, ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
23
src/main/resources/application.yml
Normal file
23
src/main/resources/application.yml
Normal file
@ -0,0 +1,23 @@
|
||||
server:
|
||||
port: 8308
|
||||
|
||||
spring:
|
||||
datasource:
|
||||
dynamic:
|
||||
datasource:
|
||||
master_1:
|
||||
url: jdbc:postgresql://hgprecn-cn-i7m2ssubq004-cn-hangzhou.hologres.aliyuncs.com:80/sdk_statis_test?socketTimeout=30
|
||||
username: LTAI5tNSJmvVjrS1cL1YSnU3
|
||||
password: zAhsbbqXftQwOKbNs966rW4b7XBVgl
|
||||
driver-class-name: org.postgresql.Driver
|
||||
hikari:
|
||||
minimum-idle: 10
|
||||
maximum-pool-size: 100
|
||||
connection-timeout: 30000
|
||||
idle-timeout: 600000
|
||||
max-lifetime: 1800000
|
||||
|
||||
#logging:
|
||||
# level:
|
||||
# com.zaxxer.hikari: DEBUG
|
||||
|
21
src/main/resources/banner.txt
Normal file
21
src/main/resources/banner.txt
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
_ooOoo_
|
||||
o8888888o
|
||||
88" . "88
|
||||
(| -_- |)
|
||||
O\ = /O
|
||||
____/`---'\____
|
||||
.' \\| |// `.
|
||||
/ \\||| : |||// \
|
||||
/ _||||| -:- |||||- \
|
||||
| | \\\ - /// | |
|
||||
| \_| ''\---/'' | |
|
||||
\ .-\__ `-` ___/-. /
|
||||
___`. .' /--.--\ `. . __
|
||||
."" '< `.___\_<|>_/___.' >'"".
|
||||
| | : `- \`.;`\ _ /`;.`/ - ` : | |
|
||||
\ \ `-. \_ __\ /__ _/ .-` / /
|
||||
=`-.____`-.___\_____/___.-`____.-'====
|
||||
`=---='
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
佛祖保佑 永无BUG
|
31
src/main/resources/logback-spring.xml
Normal file
31
src/main/resources/logback-spring.xml
Normal file
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
|
||||
<!-- 定义日志输出格式 -->
|
||||
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%-5level] %logger{36} - %msg%n"/>
|
||||
|
||||
<!-- Console Appender: 将日志输出到控制台 -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${LOG_PATTERN}</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 设置 root logger 为 INFO 级别,并将日志输出到控制台 -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
|
||||
<!-- PostgreSQL 的日志: 设置为 ERROR 级别,避免打印 DEBUG 和 INFO 级别的日志 -->
|
||||
<logger name="org.postgresql" level="ERROR" />
|
||||
|
||||
<!-- MyBatis 的日志: 设置为 INFO 级别,通常设置为 INFO 或 WARN -->
|
||||
<logger name="org.apache.ibatis" level="INFO" />
|
||||
|
||||
<!-- HikariCP 连接池日志: 设置为 ERROR 级别 -->
|
||||
<logger name="com.zaxxer.hikari" level="ERROR" />
|
||||
|
||||
<!-- 你可以针对应用中特定的服务或类设置日志级别 -->
|
||||
<logger name="sdk_996.service.SqlExecuteService" level="DEBUG"/>
|
||||
|
||||
</configuration>
|
Loading…
x
Reference in New Issue
Block a user