# LogPrint
**Repository Path**: hmxchen/log-print
## Basic Information
- **Project Name**: LogPrint
- **Description**: 只需要注解就可以打印日志,不在需要频繁编写日志打印
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-09-03
- **Last Updated**: 2022-06-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# LogPrint
#### 介绍
只需要注解就可以打印日志,不在需要频繁编写日志打印
### 软件架构
依赖spring-boot-starter-aop
### 原理说明
AOP + Reflect
### 作用范围
任意由**spring**调用的方法
#### 使用方式:
##### 1.准备工作
```
克隆此仓库
mvn clean install
```
更新版本:mvn versions:set -DnewVersion=0.3.2
添加依赖版本:
```
core.hmchen
logPrint
0.3.2
```
开启日志:
yml方式:
```
logging:
level:
core.hmchen.log: DEBUG
log-setting:
# 开启请求日志打印 ,默认关闭
print-request: false
# 全局日志级别 debug
level: debug
#代码定位开启:默认关闭
position: disabled
#当@LogPrint和请求注解混合以请求日志格式为主,业务名则使用@LogPrint的biz
#如果没有@LogPrint将以方法名作为业务名
request-log-impl: "请求日志RequestLogFormatter实现类全类名"
params-log-impl:"参数日志LogFormatter实现类"
around-log-impl:"环绕日志LogFormatter实现类"
result-log-impl:"结果日志LogFormatter实现类"
throw-log-impl: "异常日志LogFormatter实现类"
```
#### 二.开始使用
@LogPrint注解简单示例:
```
@RestController
@RequestMapping("/log/print")
public class LogPintController {
@LogPrint(biz = "测试输入参数",level = Level.INFO,print = Print.DO_BEFORE_LOG)
@GetMapping("/logTest2")
public Map logTest2(HttpServletRequest request, Map param) {
Map result = new HashMap<>(3);
result.put("code", 200);
result.put("msg", "success");
result.put("data", param);
return result;
}
@LogPrint(biz = "测试输出结果",level = Level.INFO,print = Print.AFTER_RETURN_LOG)
@GetMapping("/logTest21")
public Map logTest21(HttpServletRequest request, Map param) {
Map result = new HashMap<>(3);
result.put("code", 200);
result.put("msg", "success");
result.put("data", param);
return result;
}
@LogPrint(biz = "测试输出异常",level = Level.INFO,print = Print.AFTER_THROW_LOG)
@GetMapping("/logTest22")
public Map logTest22(HttpServletRequest request) {
Map result = new HashMap<>(3);
result.put("code", 200);
result.put("msg", "success");
result.put("data", 1/0);
return result;
}
@LogPrint(biz = "测试拦截输入参数",level = Level.INFO,print = Print.DO_BEFORE_LOG,paramFilter = {"request"} )
@GetMapping("/logTest3")
public Map logTest3(HttpServletRequest request, Map param) {
Map result = new HashMap<>(3);
result.put("code", 200);
result.put("msg", "success");
result.put("data", param);
return result;
}
@LogPrint(biz = "测试指定格式化实现类",level = Level.INFO,print = Print.AROUND_LOG ,logImplClass = "core.hmxchen.test.logimpl.RequestLogImpl")
@GetMapping("/logTest31")
public Map logTest31(HttpServletRequest request, Map param) {
Map result = new HashMap<>(3);
result.put("code", 200);
result.put("msg", "success");
result.put("data", param);
return result;
}
@LogPrint(biz = "测试指定格式化实现类",level = Level.INFO,print = Print.AROUND_LOG ,logImplClass = "core.hmxchen.test.logimpl.RequestLogImpl")
@GetMapping("/logTest31")
public Map logTest31(HttpServletRequest request, Map param) {
Map result = new HashMap<>(3);
result.put("code", 200);
result.put("msg", "success");
result.put("data", param);
return result;
}
@LogPrint(biz = "请求日志打印测试")
@GetMapping("/logTest212")
public Map logTest212(HttpServletRequest request, Map param) {
Map result = new HashMap<>(3);
result.put("code", 200);
result.put("msg", "success");
result.put("data", param);
return result;
}
}
```
#### 效果图:



@LogPrint注解介绍:
```
/**
* 功能说明
* @return
*/
String biz() default "";
/**
* 日志级别
*DEBUG
*INFO
*WARN
*ERROR
*@return
*/
Level level() default Level.DEBUG;
/**
* 代码定位支持(是否显示方法所在行数)
* Position.DISABLED 关闭
* Position.ENABLED 开启
* @return
*/
Position position() default Position.DISABLED;
/**
* 参数过滤(目前只过滤输入参数)
* @return
*/
String[] paramFilter() default {};
/**
* 打印类型
* Print.DO_BEFORE_LOG 输入参数日志
* Print.AROUND_LOG 环绕日志
* Print.AFTER_RETURN_LOG 输出结果日志
* Print.AFTER_THROW_LOG 输出异常日志
* @return
*/
Print[] print() default {Print.DO_BEFORE_LOG,Print.AROUND_LOG,Print.AFTER_RETURN_LOG,Print.AFTER_THROW_LOG};
/**
* 1.日志格式实现类,需要继承LogFormatter接口
* 2.填写实现类全类名,位置需要与所填写的打印类型一一对应
* 比如打印类型所填写的时:输入参数日志 输出结果日志
* 那么:日志实现:输入参数格式化日志实现类 输出结果格式化日志实现类
* @return
*/
String[] logImplClass() default {};
```
详细用法请参考Demo