个人博客开发之blog-api 项目全局日志拦截记录

大型完善项目中肯定是需要一个全局日志拦截,记录每次接口访问相关信息,包括:
访问ip,访问设备,请求参数,响应结果,响应时间,开始请求时间,访问接口描述,访问的用户,接口地址,请求类型,便于项目的调试追踪

整合日志

SpringBoot已经帮我们做了日志整合,在它的父pom项中

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.7</version> <relativePath/> <!-- lookup parent from repository --> </parent>

我们点进去看到还有父pom项

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.4.7</version> </parent>

spring-boot-dependencies帮我自动整合所有jar包版本,和内置很多启动项start,这是SpringBoot使用起来不需要配置那么多jar包依赖关系的本质,点进去我们看到了,所有spring,springmvc所需要依赖,和jar版本

个人博客开发之blog-api 项目全局日志拦截记录

个人博客开发之blog-api 项目全局日志拦截记录


最终我们找到了日志依赖所需jar包,所以我们直接使用就行,不需要额外引入

配置日志 ######日志配置###### # 日志文件 logging.config=classpath:logback-spring.xml #日志包级别 #logging.level.root=info logging.level.cn.soboys.blogapi=info #日志存储路径 logging.file.path=http://www.likecs.com/Users/xiangyong/selfProject/project/blog-api/log 日志文件配置

这里日志名字logback-spring.xml是SpringBoot独有,这么写spring boot可以为它添加一些spring boot特有的配置项

<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <contextName>shop-api</contextName> <!--定义日志文件的存储地址 从springboot配置文件中获取路径--> <springProperty scope="context" source="logging.file.path"/> <!--springboot配置文件中获取日志级别--> <springProperty scope="context" source="logging.level.root"/> <!-- <property value="log" />--> <property value="15" /> <property value="%magenta(%d{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %yellow(%thread) %green(%logger) %msg%n"/> <property value="%d{yyyy-MM-dd HH:mm:ss} %-5level %thread %logger %msg%n"/> <!--输出到控制台--> <appender> <encoder> <pattern>${log.colorPattern}</pattern> </encoder> </appender> <!--输出到文件--> <appender> <rollingPolicy> <fileNamePattern>${LOG_PATH}/info/info.%d{yyyy-MM-dd}.log</fileNamePattern> <MaxHistory>${log.maxHistory}</MaxHistory> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> </encoder> <filter> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender> <rollingPolicy> <fileNamePattern>${LOG_PATH}/error/error.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> </encoder> <filter> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <root level="debug"> <appender-ref ref="console" /> </root> <root level="info"> <appender-ref ref="file_info" /> <appender-ref ref="file_error" /> </root> </configuration>

这里我把日志分成两个日志文件,一个错误日志,一个信息日志,按照明天一个日志文件方式

个人博客开发之blog-api 项目全局日志拦截记录

全局日志记录

这里我们基于aop切面进行请求拦截,记录所有请求相关信息

package cn.soboys.core; import lombok.Data; /** * @author kenx * @version 1.0 * @date 2021/6/18 18:48 * 日志信息 */ @Data public class LogSubject { /** * 操作描述 */ private String description; /** * 操作用户 */ private String username; /** * 操作时间 */ private String startTime; /** * 消耗时间 */ private String spendTime; /** * URL */ private String url; /** * 请求类型 */ private String method; /** * IP地址 */ private String ip; /** * 请求参数 */ private Object parameter; /** * 请求返回的结果 */ private Object result; /** * 城市 */ private String city; /** * 请求设备信息 */ private String device; }

这里用到了aop 所以要导入aop相关包

<!--aop 切面--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysyfg.html