# easy-log
**Repository Path**: easycode8/easy-log
## Basic Information
- **Project Name**: easy-log
- **Description**: Easy-Log是一个基于SpringBoot AOP实现的日志组件,具有全自动记录日志、支持记录MyBatis执行操作的数据快照、支持性能测试、注解/自定义注解/无注解记录操作日志的功能,支持自定义标签和SpEL表达式,提供Web管理界面进行在线动态控制日志功能的启停、同步异步切换和日志处理器切换等功能
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 17
- **Forks**: 9
- **Created**: 2023-05-02
- **Last Updated**: 2025-08-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# easy-log

- [研发工作的痛点](#研发工作的痛点)
- [功能介绍](#功能介绍)
- [快速开始](#快速开始)
- [1.引入依赖](#1引入依赖)
- [2.开启自动日志记录](#2开启自动日志记录)
- [3.配置操作人](#3配置操作人)
- [4.动态修改日志配置及在线日志](#4动态修改日志配置及在线日志)
- [5.开启数据快照功能](#5开启数据快照功能)
- [更多使用说明](#更多使用说明)
- [版本日志](#版本日志)
- [1.0.12](#1012)
- [1.0.11](#1011)
- [1.0.10](#1010)
## 研发工作的痛点
1. 开发一个新业务项目,发现没有系统日志基础设施,要迁移aop日志代码,或者每次只能用一个模板项目全套依赖。
2. 接手一个旧业务项目,发现都是业务代码,很多关键代码没有日志输出,排查问题困难,补日志痛苦。
3. 使用日志采集统一收集日志,发现没有请求traceId来唯一标识相关业务日志,定位问题难。
4. 使用日志记录保存到数据库,有时候会导致数据量过大,不能灵活控制日志处理的开关。
5. 系统关键配置被用户误修改或者误删除, 导致业务功能异常, 没法排查谁改了,改之前是什么数据,没有快照数据。
为了解决以上痛点,开发了easy-log日志框架。
## 功能介绍
- 基于SpringBoot AOP实现:Easy-Log利用Spring AOP框架,通过定义切面来实现日志抽象管理和记录。
- 全自动记录日志:Easy-Log支持使用注解、自定义注解或者无注解的方式来记录操作日志。其中,支持Controller/Service免开发一键开启日志,让日志记录更加自动化和方便。
- 记录MyBatis执行操作的数据快照:Easy-Log支持无入侵自动记录MyBatis执行删除和修改操作的数据快照,方便用户在后续的数据修复及数据审计使用。
- 支持性能测试:Easy-Log提供了Stopwatch测试工具,可以方便地测试应用程序的性能。
- 扩展标签功能:Easy-Log支持使用自定义标签来扩展业务信息,方便用户进行日志的分类和查询。
- 支持异步记录日志:Easy-Log支持异步记录日志,可以避免日志记录对应用程序性能的影响。
- 在线管理日志功能:Easy-Log提供了Web管理界面,可以在线动态控制日志功能的启停、同步异步切换和日志处理器切换等功能。
- 在线实时日志查看:通过Web管理页面,可实时查看控制台日志。
- 扩展功能: Easy-Log标记日志/处理日志/控制日志,每个重要环节都保留丰富的扩展接口来满足业务个性化的需要。
- 日志追踪功能: Easy-Log提供默认traceId日志追踪能力,同时支持集成spring的sleuth/zipkin。
## 快速开始
### 1.引入依赖
```xml
io.github.easycode8
easy-log-spring-boot-starter
latest
```
### 2.开启自动日志记录
开启扫描controller/service 日志
```yaml
spring:
application:
name: sample-service #你服务的名称
easy-log:
scan-controller:
enabled: true #是否记录controller中的公开方法 默认:false
scan-service:
enabled: true #是否记录service中的公开方法 默认:false
```
启动项目,调用web接口
```markdown
2023-08-11 10:25:42.615 INFO [sample-service,478227a216a34dc2954d6ff714550df5] 37360 --- [nio-8000-exec-8] c.e.e.core.handler.DefaultLogHandler : [easy-log][TestLogController.list(username)]--begin operator:[null] param:username=aaaaaaa
2023-08-11 10:25:42.618 INFO [sample-service,478227a216a34dc2954d6ff714550df5] 37360 --- [nio-8000-exec-8] c.e.e.core.handler.DefaultLogHandler : [easy-log][TestLogController.list(username)]--end timeout:5
```
- 自动记录请求类及方法,并记录参数及超时时间
- 自动为请求生成traceId
如果要替换原始类及方法日志信息,支持日志注解方式@EasyLog
> @EasyLog 支持请求参数spel解析,定义日志处理,异步处理,自定义标签属性等高级功能请参考[《easy-log使用教程》](https://easycode8.github.io/easy-log)
```java
@EasyLog(value = "list-查询列表信息", template = "'查询参数:' + #name ")
@GetMapping("/list1")
public ResponseEntity