Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sqlrest
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
comm
sqlrest
Commits
0efb2eb7
Commit
0efb2eb7
authored
Jun 22, 2025
by
inrgihc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
接口日志自动清理
parent
396ffd9b
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
165 additions
and
62 deletions
+165
-62
README.md
+39
-48
build-docker/sqlrest/sqlrest-release/conf/executor/application.yaml
+1
-0
build-docker/sqlrest/sqlrest-release/conf/executor/logback-executor.xml
+2
-2
build-docker/sqlrest/sqlrest-release/conf/gateway/application.yaml
+1
-0
build-docker/sqlrest/sqlrest-release/conf/gateway/logback-gateway.xml
+2
-2
build-docker/sqlrest/sqlrest-release/conf/manager/application.yaml
+1
-0
build-docker/sqlrest/sqlrest-release/conf/manager/logback-manager.xml
+7
-2
sqlrest-executor/src/main/resources/application.yaml
+1
-0
sqlrest-executor/src/main/resources/logback-executor.xml
+2
-2
sqlrest-gateway/src/main/resources/application.yaml
+1
-0
sqlrest-gateway/src/main/resources/logback-gateway.xml
+2
-2
sqlrest-manager/src/main/java/com/gitee/sqlrest/manager/config/SchedulingConfiguration.java
+38
-0
sqlrest-manager/src/main/java/com/gitee/sqlrest/manager/model/McpToolCallHandler.java
+1
-1
sqlrest-manager/src/main/java/com/gitee/sqlrest/manager/service/AccessLogCleanService.java
+49
-0
sqlrest-manager/src/main/java/com/gitee/sqlrest/manager/service/McpManageService.java
+1
-0
sqlrest-manager/src/main/resources/application.yaml
+1
-0
sqlrest-manager/src/main/resources/logback-manager.xml
+7
-2
sqlrest-persistence/src/main/java/com/gitee/sqlrest/persistence/mapper/AccessRecordMapper.java
+9
-1
No files found.
README.md
View file @
0efb2eb7
...
...
@@ -3,53 +3,46 @@

> 将
数据库可执行的SQL直接RESTful风格的http接口
的便捷工具
> 将
SQL 查询转化为 RESTful API
的便捷工具
## 一、工具介绍
### 1、功能介绍
一句话, sqlrest提供利用SQL快速构建RESTful接口的工具,包括SQl方式和Groovy脚本方式。用户只需选择数据
源、输入SQL或脚本、简单path配置即可快速生成API接口。具体功能包括:
-
Mybatis的SQL方式构建RESTful接口
> 提供类似mybatis的动态SQL语法方式构建接口。
-
Groovy脚本方式构建RESTful接口
> 基于groovy脚本的语法方式构建复杂场景下的接口。
SQLREST 是一个开源项目,旨在提供一种简单而强大的方式来将 SQL 查询转化为 RESTful API。它支持多种数据库,允许用户通过配置 SQL 语句来创建 API,无
需编写复杂的后端逻辑,用户只需选择数据源、输入SQL或脚本、简单path配置即可快速生成API接口。
-
支持接口的token安全认证功能
> 执行器支持生成token及token认证。
-
支持接口的x-www-form-urlencoded和JSON入参格式
> HTTP入参支持application/x-www-form-urlencoded及application/json等请求格式。
-
接口入参出参支持基本、对象及对象等多种类型
> HTTP入参出参支持整型/浮点型/时间/日期/布尔/字符串/对象等多种类型
### 1、功能介绍
-
支持自动生成在线接口文档功能
> 基于swagger-ui提供自动生成在线接口文档功能。
SQLREST的功能包括:
-
支持接口缓存配置功能
> 执行器基于Hazelcast/Redis支持接口的缓存配置功能。
-
**SQL直接构建API**
:通过配置SQL和参数即可生成 RESTful API。
-
**多数据库支持**
:支持常见的20+种数据库,其中包含多款国产数据库。
-
**MyBatis语法支持**
:支持MyBatis的动态SQL语法。
-
**Groovy脚本支持**
:支持groovy语法构建复杂场景下的接口。
-
**参数类型支持**
:支持整型/浮点型/时间/日期/布尔/字符串/对象等多种类型。
-
**ContentType支持**
:支持application/x-www-form-urlencoded及application/json等多种请求格式。
-
**身份认证**
:提供基于 Token 的认证机制,保护 API 安全。
-
**Swagger在线文档**
:支持自动生成swagger-ui的在线接口文档。
-
**缓存配置支持**
:支持 Hazelcast 和 Redis 缓存,提升 API 访问性能。
-
**流控配置管理**
:通过 Sentinel 支持流量控制,防止系统过载。
-
**统一告警对接**
:支持统一告警系统的对接与触发。
-
**大模型MCP服务**
:支持简单配置即可创建MCP的tool。
-
支持接口的流量控制功能
> 执行器基于sentinel支持接口的流量控制功能。
SQLREST作为微服务架构下的数据访问中间件,适合以下场景:
-
支持接口异常触发告警功能
> 简单配置即可对接已有的告警平台,支持接口异常时的告警功能。
-
**快速将 SQL 转换为 API**
-
**企业级数据库访问统一接口**
-
**API 访问控制与流控**
-
**适用于数据中台、BI 工具、低代码平台等**
-
支持作为大模型MCP服务断快速创建tool
> 基于已有接口,简单配置即可快速创建MCP的tool,为大模型提供MCP服务端工具。
### 2、数据库清单
### 2、支持的数据库
截至当前,已支持的数据库包括:
-
甲骨文的Oracle
-
微软的Microsoft SQLServer
-
微软的Microsoft SQLServer
(2005+)
-
MySQL
-
MariaDB
-
PostgreSQL
-
Greenplum(需使用PostgreSQL类型)
-
PostgreSQL/Greenplum
-
IBM的DB2
-
Sybase数据库
-
国产达梦数据库DM
...
...
@@ -87,18 +80,14 @@
### 4、正在规划中的功能
-
(1) 接口检索功能
> 支持类似百度搜索的接口搜索功能,方便接口查找
-
(2) 接口详情功能
> 支持接口的详细定义、数据来源、访问分析等功能
-
(3) 前端界面整体美化
> 美化界面的交互展示,尤其是“拓扑结构”页面。
-
**接口检索功能**
: 支持类似百度搜索的接口搜索功能,方便接口查找。
-
**接口详情功能**
:支持接口的详细定义、数据来源、访问分析等功能。
-
**前端界面美化**
: 美化界面的交互展示,尤其是“拓扑结构”页面。
-
**增强SQ语法自动提示**
: 在实现的库名表名提示的基础上,基于数据库元信息的增强智能提示,强化用户体验。
## 二、编译打包
本工具纯Java语言开发,依赖全部来自于开源项目。
本工具纯Java语言开发,依赖全部来自于开源项目。
SQLREST项目采用Maven构建。
### 1、编译打包
...
...
@@ -190,7 +179,7 @@ MYSQLDB_PASSWORD=123456
```
>sqlrest的缓存支持使用分布式的hazelcast或者redis,在conf/{manager,gateway,executor}/目录下的application.yml配
>置文件中,可通过如下调整配置实用redis缓存,默认为使用hazelcast缓存。
>置文件中,可通过如下调整配置实用redis缓存,默认为使用hazelcast缓存
(注意:manager/gateway/executor三者的缓存配置要一致)
。
```
sqlrest:
...
...
@@ -253,10 +242,6 @@ sqlrest:





...
...
@@ -265,7 +250,13 @@ sqlrest:
## 四、贡献参与
为了能让项目得到更好的可持续的发展,sqlrest期望获得更多的代码开发爱好者参与代码贡献,具体可参考文档说明:
[
贡献说明指南
](
https://gitee.com/inrgihc/dbswitch/blob/master/CONTRIBUTE.md
)
为了能让项目得到更好的可持续的发展,SQLREST期望获得更多的代码开发爱好者参与代码贡献,包括但不限于:
-
改进前端 UI/UX
-
修复 bug 和性能优化
-
增加新的易用性功能
贡献操作文档参考:
[
贡献说明指南
](
https://gitee.com/inrgihc/dbswitch/blob/master/CONTRIBUTE.md
)
## 五、项目推荐
...
...
build-docker/sqlrest/sqlrest-release/conf/executor/application.yaml
View file @
0efb2eb7
...
...
@@ -39,6 +39,7 @@ logging:
eureka
:
instance
:
ip-address
:
${MANAGER_HOST}
prefer-ip-address
:
true
secure-port-enabled
:
false
non-secure-port-enabled
:
true
...
...
build-docker/sqlrest/sqlrest-release/conf/executor/logback-executor.xml
View file @
0efb2eb7
...
...
@@ -8,7 +8,7 @@
<appender
name=
"STDOUT"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
@@ -31,7 +31,7 @@
</rollingPolicy>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
build-docker/sqlrest/sqlrest-release/conf/gateway/application.yaml
View file @
0efb2eb7
...
...
@@ -72,6 +72,7 @@ logging:
eureka
:
instance
:
ip-address
:
${MANAGER_HOST}
prefer-ip-address
:
true
secure-port-enabled
:
false
non-secure-port-enabled
:
true
...
...
build-docker/sqlrest/sqlrest-release/conf/gateway/logback-gateway.xml
View file @
0efb2eb7
...
...
@@ -8,7 +8,7 @@
<appender
name=
"STDOUT"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
@@ -31,7 +31,7 @@
</rollingPolicy>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
build-docker/sqlrest/sqlrest-release/conf/manager/application.yaml
View file @
0efb2eb7
...
...
@@ -48,6 +48,7 @@ eureka:
enabled
:
false
path
:
/dashboard
instance
:
ip-address
:
${MANAGER_HOST}
prefer-ip-address
:
true
secure-port-enabled
:
false
non-secure-port-enabled
:
true
...
...
build-docker/sqlrest/sqlrest-release/conf/manager/logback-manager.xml
View file @
0efb2eb7
...
...
@@ -8,7 +8,7 @@
<appender
name=
"STDOUT"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
@@ -31,10 +31,15 @@
</rollingPolicy>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
<logger
name=
"com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient"
level=
"ERROR"
/>
<logger
name=
"com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient"
level=
"ERROR"
/>
<logger
name=
"com.netflix.discovery.DiscoveryClient"
level=
"OFF"
/>
<logger
name=
"com.netflix.discovery.InstanceInfoReplicator"
level=
"ERROR"
/>
<!-- 日志输出级别 -->
<root
level=
"INFO"
>
<appender-ref
ref=
"STDOUT"
/>
...
...
sqlrest-executor/src/main/resources/application.yaml
View file @
0efb2eb7
...
...
@@ -39,6 +39,7 @@ logging:
eureka
:
instance
:
ip-address
:
${MANAGER_HOST}
prefer-ip-address
:
true
secure-port-enabled
:
false
non-secure-port-enabled
:
true
...
...
sqlrest-executor/src/main/resources/logback-executor.xml
View file @
0efb2eb7
...
...
@@ -8,7 +8,7 @@
<appender
name=
"STDOUT"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
@@ -31,7 +31,7 @@
</rollingPolicy>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
sqlrest-gateway/src/main/resources/application.yaml
View file @
0efb2eb7
...
...
@@ -72,6 +72,7 @@ logging:
eureka
:
instance
:
ip-address
:
${MANAGER_HOST}
prefer-ip-address
:
true
secure-port-enabled
:
false
non-secure-port-enabled
:
true
...
...
sqlrest-gateway/src/main/resources/logback-gateway.xml
View file @
0efb2eb7
...
...
@@ -8,7 +8,7 @@
<appender
name=
"STDOUT"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
@@ -31,7 +31,7 @@
</rollingPolicy>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
sqlrest-manager/src/main/java/com/gitee/sqlrest/manager/config/SchedulingConfiguration.java
0 → 100644
View file @
0efb2eb7
// Copyright tang. All rights reserved.
// https://gitee.com/inrgihc/sqlrest
//
// Use of this source code is governed by a BSD-style license
//
// Author: tang (inrgihc@126.com)
// Date : 2024/3/31
// Location: beijing , china
/////////////////////////////////////////////////////////////
package
com
.
gitee
.
sqlrest
.
manager
.
config
;
import
java.util.concurrent.ThreadPoolExecutor
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.TaskScheduler
;
import
org.springframework.scheduling.annotation.SchedulingConfigurer
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
;
import
org.springframework.scheduling.config.ScheduledTaskRegistrar
;
@Configuration
public
class
SchedulingConfiguration
implements
SchedulingConfigurer
{
@Bean
(
"managerTaskScheduler"
)
public
TaskScheduler
taskScheduler
()
{
ThreadPoolTaskScheduler
executor
=
new
ThreadPoolTaskScheduler
();
executor
.
setPoolSize
(
10
);
executor
.
setThreadNamePrefix
(
"scheduler-task-thread-"
);
executor
.
setRejectedExecutionHandler
(
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
executor
.
initialize
();
return
executor
;
}
@Override
public
void
configureTasks
(
ScheduledTaskRegistrar
scheduledTaskRegistrar
)
{
scheduledTaskRegistrar
.
setTaskScheduler
(
taskScheduler
());
}
}
sqlrest-manager/src/main/java/com/gitee/sqlrest/manager/
service
/McpToolCallHandler.java
→
sqlrest-manager/src/main/java/com/gitee/sqlrest/manager/
model
/McpToolCallHandler.java
View file @
0efb2eb7
...
...
@@ -7,7 +7,7 @@
// Date : 2024/3/31
// Location: beijing , china
/////////////////////////////////////////////////////////////
package
com
.
gitee
.
sqlrest
.
manager
.
service
;
package
com
.
gitee
.
sqlrest
.
manager
.
model
;
import
cn.hutool.extra.spring.SpringUtil
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
...
...
sqlrest-manager/src/main/java/com/gitee/sqlrest/manager/service/AccessLogCleanService.java
0 → 100644
View file @
0efb2eb7
// Copyright tang. All rights reserved.
// https://gitee.com/inrgihc/sqlrest
//
// Use of this source code is governed by a BSD-style license
//
// Author: tang (inrgihc@126.com)
// Date : 2024/3/31
// Location: beijing , china
/////////////////////////////////////////////////////////////
package
com
.
gitee
.
sqlrest
.
manager
.
service
;
import
com.gitee.sqlrest.persistence.mapper.AccessRecordMapper
;
import
javax.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.context.event.ApplicationReadyEvent
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Service
;
@Slf4j
@Service
public
class
AccessLogCleanService
{
@Value
(
"${access.log.clean.days:30}"
)
private
Integer
cleanJobLogDays
;
@Resource
private
AccessRecordMapper
accessRecordMapper
;
@EventListener
(
ApplicationReadyEvent
.
class
)
public
void
cleanOnceAfterRestart
()
{
doCleanHistoryLog
();
}
@Scheduled
(
cron
=
"0 0 0 * * ? "
)
public
void
cleanSchedule
()
{
doCleanHistoryLog
();
}
private
void
doCleanHistoryLog
()
{
try
{
accessRecordMapper
.
deleteHistoryBeforeDays
(
cleanJobLogDays
);
log
.
info
(
"Success to clean history access log for {} days"
,
cleanJobLogDays
);
}
catch
(
Throwable
t
)
{
log
.
error
(
"Failed to clean history access log,"
,
t
);
}
}
}
sqlrest-manager/src/main/java/com/gitee/sqlrest/manager/service/McpManageService.java
View file @
0efb2eb7
...
...
@@ -18,6 +18,7 @@ import com.gitee.sqlrest.common.util.TokenUtils;
import
com.gitee.sqlrest.core.dto.EntitySearchRequest
;
import
com.gitee.sqlrest.core.dto.McpToolResponse
;
import
com.gitee.sqlrest.core.dto.McpToolSaveRequest
;
import
com.gitee.sqlrest.manager.model.McpToolCallHandler
;
import
com.gitee.sqlrest.persistence.dao.ApiAssignmentDao
;
import
com.gitee.sqlrest.persistence.dao.ApiModuleDao
;
import
com.gitee.sqlrest.persistence.dao.McpClientDao
;
...
...
sqlrest-manager/src/main/resources/application.yaml
View file @
0efb2eb7
...
...
@@ -48,6 +48,7 @@ eureka:
enabled
:
false
path
:
/dashboard
instance
:
ip-address
:
${MANAGER_HOST}
prefer-ip-address
:
true
secure-port-enabled
:
false
non-secure-port-enabled
:
true
...
...
sqlrest-manager/src/main/resources/logback-manager.xml
View file @
0efb2eb7
...
...
@@ -8,7 +8,7 @@
<appender
name=
"STDOUT"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
...
...
@@ -31,10 +31,15 @@
</rollingPolicy>
<encoder
class=
"ch.qos.logback.classic.encoder.PatternLayoutEncoder"
>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50}
- %msg%n
</pattern>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}]
- %msg%n
</pattern>
</encoder>
</appender>
<logger
name=
"com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient"
level=
"ERROR"
/>
<logger
name=
"com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient"
level=
"ERROR"
/>
<logger
name=
"com.netflix.discovery.DiscoveryClient"
level=
"OFF"
/>
<logger
name=
"com.netflix.discovery.InstanceInfoReplicator"
level=
"ERROR"
/>
<!-- 日志输出级别 -->
<root
level=
"INFO"
>
<appender-ref
ref=
"STDOUT"
/>
...
...
sqlrest-persistence/src/main/java/com/gitee/sqlrest/persistence/mapper/AccessRecordMapper.java
View file @
0efb2eb7
...
...
@@ -15,6 +15,7 @@ import com.gitee.sqlrest.common.dto.NameCount;
import
com.gitee.sqlrest.persistence.entity.AccessRecordEntity
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.ibatis.annotations.Delete
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
...
...
@@ -71,10 +72,17 @@ public interface AccessRecordMapper extends BaseMapper<AccessRecordEntity> {
+
" count(*) as total, "
+
" sum(success) as success "
+
"FROM ( "
+
" SELECT id,path,case when status=200 then 1 else 0 end as success, create_time FROM SQLREST_ACCESS_RECORD "
+
" SELECT id,path,case when status=200 then 1 else 0 end as success, create_time "
+
" FROM SQLREST_ACCESS_RECORD "
+
" WHERE DATE_SUB( CURDATE(), INTERVAL ${days} DAY ) <= date(create_time) "
+
" ) t "
+
" GROUP BY of_date"
+
"</script>"
)
List
<
DateCount
>
getDailyTrend
(
@Param
(
"days"
)
Integer
days
);
@Delete
(
"<script>"
+
"DELETE FROM SQLREST_ACCESS_RECORD "
+
"WHERE date(create_time) <= DATE_SUB( CURDATE(), INTERVAL ${days} DAY ) "
+
"</script>"
)
void
deleteHistoryBeforeDays
(
@Param
(
"days"
)
Integer
days
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment