# usking-tools-log **Repository Path**: skylsj/usking-tools-log ## Basic Information - **Project Name**: usking-tools-log - **Description**: 用来打印springboot项目的RQ,RS的方法,无代码侵入。加入,卸载方便。按说明配置即可。 - **Primary Language**: Java - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-29 - **Last Updated**: 2022-02-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # usking-tools-log #### 介绍 用来打印springboot项目的RQ,RS的方法,无代码侵入。加入、卸载方便。按说明配置即可。 如果不想本地编译,只需要把dist目录下的usking-tools-log-1.0.0.jar下载下来即可。 #### 软件架构 usking-tools-log使用的技术: 1. 使用springboot-starter的原理实现了按条件加载。 2. 利用AOP切面拦截技术,无代码侵入取得方法出入参。 3. 利用RequestContextHolder类取调用URL。 4. 利用RefreshScope技术,实现参数动态刷新。 #### 安装教程 1. 引入usking-tools-log-1.0.0.jar ```xml top.usking.tools.log usking-tools-log 1.0.0 ``` 2. 配置参数 * application.properties 格式配置 ```properties # 需要打印出入参的方法 top.usking.log.log-pointcut-expression=execution(* com.example.uskingtoolsweb.controller..*.*(..)) # 启用usking-tools-log程序,默认值false top.usking.log.enabled=true # 开启日志输出,默认值true top.usking.log.output.enabled=true # 出入参是否用json序列化输出,默认值false top.usking.log.output.with-json=true ``` * application.yml 格式配置 ```yaml top: usking: log: log-pointcut-expression: execution(* com.example.uskingtoolsweb.controller..*.*(..)) enabled: true output: enabled: true with-json: true ``` __注意:__     *2.1. 拦截表达式有两种形式,一种是`execution(* com.example.uskingtoolsweb.controller..*.*(..))`; *另一种是`com.example.uskingtoolsweb.controller..*.*`,后一种支持用“,”分隔的多个方法的拦截。*     *2.2. `top.usking.log.enabled`配置项,用来表示程序启动时是否加载usking-tools-log程序,不支持动态修改。*     *2.3. `top.usking.log.output.enabled`配置项,用来表示程序是否输出参数日志,支持动态修改。*     *2.4. `top.usking.log.output.with-json`配置项,出入参是否用json序列化输出,支持动态修改。* *如果类重写了toString()方法,就不需要json序列化。* *2.3, 2.4的支持动态修改,包括以下两种情况:     **a. spring cloud 项目,配置文件有文件服务器管理。修改远程配置文件。**     **b. springboot 项目中加入了spring-boot-starter-actuator监控的项目。修改本地配置文件。** 这种方式需要在pom.xml文件里添加以下依赖 ```xml 2020.0.3 org.springframework.cloud spring-cloud-starter-config org.springframework.cloud spring-cloud-starter-bootstrap org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import ``` *** #### 使用说明 1. 按以后配置后,启动项目。如果在日志里看到以下log,表示配置成功 ```log 2022-01-29 21:43:42.686 INFO 10000 --- [ main] t.u.tools.log.config.AopLogProperties : top.usking.log.default-pointcut-expression:[execution(* com.example.uskingtoolsweb.controller..*.*(..))] 2022-01-29 21:43:42.686 INFO 10000 --- [ main] t.u.tools.log.config.AopLogProperties : AOP Log config:[AopLogProperties{logPointcutExpression='execution(* com.example.uskingtoolsweb.controller..*.*(..))', enabled=true}] ``` 2. 调用接口调试,会转出类似下面的日志 ```log 2022-01-29 21:47:39.485 INFO 10000 --- [nio-8080-exec-4] t.u.t.l.i.OutputLogMethodInterceptor : ---------Path: /hello 2022-01-29 21:47:39.485 INFO 10000 --- [nio-8080-exec-4] t.u.t.l.i.OutputLogMethodInterceptor : ---------Class: com.example.uskingtoolsweb.controller.HelloApiController 2022-01-29 21:47:39.486 INFO 10000 --- [nio-8080-exec-4] t.u.t.l.i.OutputLogMethodInterceptor : ---------Method: public ResponseEntity phi(User user={"name":"Tom","age":20,"address":"DaLian"}) 2022-01-29 21:47:39.494 INFO 10000 --- [nio-8080-exec-4] t.u.t.l.i.OutputLogMethodInterceptor : ---------Returns: {"headers":{},"body":{"name":"Tom dog","age":20,"address":"DaLian"},"statusCodeValue":200,"statusCode":"OK"} ``` 3. 如果想动态修改`top.usking.log.output.enabled`,`top.usking.log.output.with-json`这两项的值,需要先修改本地applicaton.yml(properties)文件后,用post方式调用http://localhost:8080/actuator/refresh接口即可生效。 `http://localhost:8080/` 是项目实际的URL. #### 版本说明 * 1.0.1 修复path重复打印问题,只有在@Restcontroller,@Controller注解的类的方法上才打印path. * 1.0.0 发布初版