# easy-log
**Repository Path**: important123/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**: 1
- **Forks**: 9
- **Created**: 2023-08-16
- **Last Updated**: 2024-06-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# easy-log

## 研发工作的痛点
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管理界面,可以在线动态控制日志功能的启停、同步异步切换和日志处理器切换等功能。
- 扩展功能: 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