使用SpringBoot AOP记录操作日志、异常日志的过程可以分为以下几步:
- 导入依赖
在pom.xml文件中,需要导入aop和log4j等相关依赖,具体可参考以下代码:
<!-- aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- log4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
- 定义切面
定义一个切面类,用于处理需要记录日志的方法。在切面类中,需要定义@Before(方法执行前)和@After(方法执行后)等通知。具体可参考以下代码:
@Slf4j
@Aspect
@Component
public class LogAspect {
@Before("execution(* com.example.demo.controller.*.*(..))")
public void doBefore(JoinPoint joinPoint) {
log.info("执行方法:{}", joinPoint.getSignature().getName());
log.info("请求参数:{}", Arrays.toString(joinPoint.getArgs()));
}
@After("execution(* com.example.demo.controller.*.*(..))")
public void doAfter(JoinPoint joinPoint) {
log.info("执行结果:{}", joinPoint.getSignature().getName());
}
@AfterThrowing(pointcut = "execution(* com.example.demo.controller.*.*(..))", throwing = "e")
public void doAfterThrowing(JoinPoint joinPoint, Exception e) {
log.error("发生异常:{}", joinPoint.getSignature().getName(), e);
}
}
- 开启AOP
在SpringBoot启动类上,加上@EnableAspectJAutoProxy注解,开启AOP支持。
@SpringBootApplication
@EnableAspectJAutoProxy
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
完成以上三步,就可以记录操作日志、异常日志了。
例如,我们在UserController类中,定义一个addUser方法,用于新增用户。新增用户操作会记录日志。
@RestController
@RequestMapping("/user")
@AllArgsConstructor
public class UserController {
private final IUserService userService;
@PostMapping("/add")
public Result<User> addUser(@RequestBody User user) {
User newUser = userService.addUser(user);
return ResultUtil.success(newUser);
}
}
再例如,我们在UserService类中,定义一个getUser方法,当参数不合法时,抛出异常,并记录异常日志。
@Service
@AllArgsConstructor
public class UserServiceImpl implements IUserService {
private final UserRepository userRepository;
@Override
public User addUser(User user) {
return userRepository.save(user);
}
@Override
public User getUser(Long id) {
if (id == null) {
throw new IllegalArgumentException("参数不能为空");
}
return userRepository.findById(id)
.orElse(null);
}
}
以上就是使用SpringBoot AOP记录操作日志、异常日志的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用SpringBoot AOP 记录操作日志、异常日志的过程 - Python技术站