# exlog
**Repository Path**: sulifer/exlog
## Basic Information
- **Project Name**: exlog
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-01-29
- **Last Updated**: 2024-01-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
**hro-exlog-spring-boot-starter**
# 一、功能介绍:
增加在controller的public方法调用前的切面,赋值logback的MDC映射,可以在对应服务的logback中直接使用变量。
# 二、自定义变量与变量意义:
appName:服务名
reqId:请求的UUID
globalReqId:请求的全局UUID,如果没有feign的发起方,则等同于reqId
uri:请求的uri
method:请求的方法类型
headers:请求头
params:请求参数
personalMention:自定义输出(通过继承实现PersonalMention类,默认返回空字符串)
# 三、使用方法
## 1.引入maven
```
com.job51.hro
hro-exlog-spring-boot-starter
2.2.0-RELEASE
```
注: 如果启动类标注了@ComponentScan ,需要扫描"com.job51.hro.exlog"。
## 2.必须静态配置
### 2.1在bootstrap.yaml中配置属性logDir
```
例:
logDir: /www/logs/${spring.application.name}/
```
### 2.2在项目的logback-spring.xml中加入include标签,resource="base-logback.xml"
```
例:
```
## 3.如果要自定义appender,可以在logback-spring.xml中encoder.pattern中使用增加的自定义变量。%X{变量名}
```
例:
Date:[%d{yyyy-MM-dd HH:mm:ss.SSS}]|[%X{appName}]|globalRequestID:[%X{globalReqId}]|localRequestID:[%X{reqId}]|uri:[%X{uri}]|method:[%X{method}]|headers:[%X{headers}]|[%-5level] %C.%M\(%F:%L\)%m %n
UTF-8
```
## 4.在项目logback-spring.xml中给feign和mapper设置debug级别(非必须)
```
例:
```
注: 如果要开启feign日志,需要配置feign的loggerlevel
如果要开启mybatis-plus日志,需要配置mybatis-plus的log-imp为slf4j
## 5.headers可以指定 请求头key来记录 (0.0.11-BETA后支持)
需要在配置中加入以下配置:
```
例:
exlog:
pass-header:
- hroj-token
```
表示 headers 只记录hroj-token
## 6.拦截器顺序控制
如果项目中有自定义的HandlerInterceptor,推荐在配置WebMvcConfigurer的时候将拦截器RequestPreAdviser的次序放到最优先
# 更新日志
##### 1.0.0-BETA.2 (2022/11/24)
- 分离部分MDC赋值操作到@ModelAttribute注解,解决非法参数请求也能记录相关参数到日志。
##### 1.0.0-BETA.3 (2022/11/28)
- 修复lion对象出现的空指针异常,当配置中未配置passHeader可能引起的空指针异常已修复。
##### 1.0.1-RELEASE (2022/11/28)
- 修改日志路径logHome 为logDir。
##### 1.0.2-RELEASE (2023/01/28)
- 增加日志自定义内容输出字段personalMention,需要实现PersonalMention类,默认返回空字符串。
##### 2.0.1-BETA.1 (2023/03/07)
- 修改抓取post参数的方式,通过拦截HttpServletRequest实现。
- 默认减少了sys日志的输出头,默认减少了traceFeign和traceSql的日志输出头
##### 2.0.1-BETA.4 (2023/03/08)
- PersonalMentionImpl不在需要手动在项目注入Bean
##### 2.0.1-BETA.5 (2023/03/20)
- Feign日志和sql日志自动压缩和自动删除配置
##### 2.1.0-BETA.4 (2023/04/22)
- 摒弃ControllerAdvice的方式,采用实现HandlerInterceptor的方式来采集MDC数据,用户可以灵活控制拦截器的次序执行
##### 2.2.0-RELEASE (2023/06/09)
- mybatis traceSql日志增加方法名节点