当前位置:网站首页 > R语言数据分析 > 正文

spring aop实现日志记录(spring日志文件)



提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言

    目录

    文章目录

    前言

    一、aop是什么

    二、使用步骤

    1.引入库

    2.读入数据

    总结


  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


Spring AOP 简介

二、为什么使用 Spring AOP?
关注点分离:将业务逻辑与横切关注点分离,使代码更加清晰和模块化。
代码复用:横切关注点可以被多个业务模块重用,减少重复代码。
增强功能:通过切面(Aspect)可以在不修改原有代码的情况下,动态地增加新的功能。
简化开发:Spring AOP 提供了强大的工具和注解,使得 AOP 编程变得更加简单和直观。
如何在 Spring Boot 项目中使用 Spring AOP?
要在 Spring Boot 项目中使用 Spring AOP,首先需要在项目的 pom.xml 文件中添加 spring-boot-starter-aop 依赖。以下是具体的依赖配置:
















代码如下(示例):

 

代码如下(示例):

package com.xiaogung.logs.annotation; import com.xiaogung.logs.domain.enums.BusinessTypeEnum; import java.lang.annotation.*; / * 自定义操作日志记录注解 * @author qrxm */ @Target(ElementType.METHOD) // 注解只能用于方法 @Retention(RetentionPolicy.RUNTIME) // 修饰注解的生命周期 public @interface Log { String value() default ""; / * 模块 */ String title() default "测试模块"; / * 方法名称 */ String method() default "测试方法"; / * 功能 */ BusinessTypeEnum businessType() default BusinessTypeEnum.OTHER; } 
package com.xiaogung.logs.aop; import com.xiaogung.logs.annotation.Log; import com.xiaogung.logs.domain.po.SysLog; import com.xiaogung.logs.listener.EventPubListener; import com.xiaogung.logs.uilts.IpUtils; import com.xiaogung.tool.domain.po.SysUser; import com.xiaogung.tool.utils.JwtTokenUtil; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import java.util.Date; @Aspect @Component @RequiredArgsConstructor public class SysLogAspect { private final JwtTokenUtil jwtTokenUtil; private final Logger logger = LoggerFactory.getLogger(SysLogAspect.class); private final EventPubListener eventPubListener; / * 以注解所标注的方法作为切入点 */ @Pointcut("@annotation(com.xiaogung.logs.annotation.Log)") public void sysLog() {} / * 在切点之后织入 * @throws Throwable */ @After("sysLog()") public void doAfter(JoinPoint joinPoint) { Log log = ((MethodSignature) joinPoint.getSignature()).getMethod() .getAnnotation(Log.class); ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); String method = request.getMethod(); String url = request.getRequestURL().toString(); String ip = IpUtils.getIpAddr(request); SysLog sysLog = new SysLog(); sysLog.setBusinessType(log.businessType().getCode()); sysLog.setTitle(log.title()); sysLog.setMethod(log.method()); sysLog.setRequestMethod(method); sysLog.setOperIp(ip); sysLog.setOperUrl(url); if(request.getHeader("Authorization")!=null){ SysUser userInfo= jwtTokenUtil.getUserNameFromToken(request.getHeader("Authorization")); sysLog.setOperName(userInfo.getUserName()); } sysLog.setOperTime(new Date()); // 发布消息 eventPubListener.pushListener(sysLog); logger.info("=======日志发送成功,内容:{}",sysLog); } } 这里我没有使用异步
@Log(value = "用户登录",title = "用户登录",method = "POST",businessType = BusinessTypeEnum.SELECT) @PostMapping("/login") @Operation(summary = "用户登录") public Result login(@RequestBody SysUserDTO sysUserDTO){ log.info("用户登录{}",sysUserDTO); loginVo s= sysUserService.login(sysUserDTO); return Result.SUCCESS(s); }

展示结果

可以看到日志记录了在看看数据库

成功了是不是很简单信息所有人都可以


如果没有成功看看是不是依赖冲突,解决办法修改依赖版本。

到此这篇spring aop实现日志记录(spring日志文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • faiies什么意思(fairs啥意思)2026-04-22 17:54:07
  • 启动docker服务的命令行是(docker 启动)2026-04-22 17:54:07
  • druiddatasource 密码加密(druid加密解密)2026-04-22 17:54:07
  • 富文本框控件(winform富文本框)2026-04-22 17:54:07
  • 数组方法slice(数组方法filter)2026-04-22 17:54:07
  • lvcreate -n参数(lvextend参数)2026-04-22 17:54:07
  • resnet50网络结构(resnet50网络结构详解)2026-04-22 17:54:07
  • chronyd(chrony服务器配置)2026-04-22 17:54:07
  • rbac权限控制(rbac 权限)2026-04-22 17:54:07
  • cruise安装步骤(cruise2010安装教程)2026-04-22 17:54:07
  • 全屏图片