# 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; } } ``` #### 效果图: ![image-20210905213429914](https://gitee.com/mxchen-team/figure-bed/raw/master/images/image-20210905213429914.png) ![image-20210905213502148](https://gitee.com/mxchen-team/figure-bed/raw/master/images/image-20210905213502148.png) ![image-20210912211126594](https://gitee.com/mxchen-team/figure-bed/raw/master/images/image-20210912211126594.png) @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