springboot使用aop做日志
一、引入jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
实现操作日志记录的功能,无非就是监控用户调用了哪些方法。AOP是一个不错的选择,接下来介绍一下,AOP怎么对每个方法都实施切面。
1.自定义注解
/**
* 自定义Log注解 用于切面标识
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
String value() default "";
}
2.将需要切面的 方法 都标注 该注解@Log
@Log("删除用户")
@RequestMapping(value = "deleteAccount.do", method = RequestMethod.POST)
@ResponseBody
public Map deleteAccounnt(Integer id) {
Integer deleteAccount = loginService.deleteAccount(id);
if (deleteAccount > 0) {
resultMap.put("status", "200");
resultMap.put("message", "账号 删除成功");
} else {
resultMap.put("status", "500");
resultMap.put("message", "账号 删除失败");
}
return resultMap;
}
3.将有Log标识的方法进行切面
@Component
@Aspect
public class LogAspect {
@Autowired
LoginlogService loginlogService;
@Pointcut("@annotation(Log)") //将Log标识的方法进行切面
public void logAsppect3() {
}
@AfterReturning("logAsppect3()")
public void logAsppect(JoinPoint jp) throws Throwable {
try {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
HttpSession session = request.getSession(true);
String email = (String) session.getAttribute("email");
//JoinPoint 对象可以获取目标业务方法的详细信息:方法签名,调用参数
Signature m = jp.getSignature();
//方法名
String methodName = m.getName();
MethodSignature signature = (MethodSignature) jp.getSignature();
Method method = signature.getMethod();
Log log = method.getAnnotation(Log.class);
System.out.println("Log Value:" + log.value());//输出注解里面的值
System.out.println("操作人 :" + email + "正在执行方法 :" + methodName);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.这样就可以 对所有@Log标识的方法进行切面,调用某个方法 也会在控制台输出,达到操作日志记录的效果
原文:https://blog.csdn.net/Joe_Wang1/article/details/82378576
springboot使用aop做日志的更多相关文章
- SpringBoot 配置 AOP 打印日志
在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见文末源码. 一.Spring AOP AOP(Aspect-Or ...
- 【Java分享客栈】超简洁SpringBoot使用AOP统一日志管理-纯干货干到便秘
前言 请问今天您便秘了吗?程序员坐久了真的会便秘哦,如果偶然点进了这篇小干货,就麻烦您喝杯水然后去趟厕所一边用左手托起对准嘘嘘,一边用右手滑动手机看完本篇吧. 实现 本篇AOP统一日志管理写法来源于国 ...
- springboot集成AOP管理日志
如何将所有的通过url的请求参数以及返回结果都输出到日志中? 如果在controller的类中每个方法名都写一个log输出肯定是不明智的选择. 使用spring的AOP功能即可完成. 1. 在pom. ...
- 在SpringBoot中用SpringAOP实现日志记录功能
背景: 我需要在一个SpringBoot的项目中的每个controller加入一个日志记录,记录关于请求的一些信息. 代码类似于: logger.info(request.getRequestUrl( ...
- Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用
==============Springboot的日志管理============= springboot无需引入日志的包,springboot默认已经依赖了slf4j.logback.log4j等日 ...
- SpringBoot学习笔记(七):SpringBoot使用AOP统一处理请求日志、SpringBoot定时任务@Scheduled、SpringBoot异步调用Async、自定义参数
SpringBoot使用AOP统一处理请求日志 这里就提到了我们Spring当中的AOP,也就是面向切面编程,今天我们使用AOP去对我们的所有请求进行一个统一处理.首先在pom.xml中引入我们需要的 ...
- 记一次基于springboot+aop实现日志记录实战
1. 为什么要记录日志 好处: a. 可以对一些重要功能进行记录,方便以后跟踪是谁操作此功能的. b. 在操作某些功能时可能会发生异常,但每次出现异常我们想定位日志都要去服务器查看我们的日志.有了日志 ...
- springboot集成aop日志
日常开发中假如是前后端完全分离,我们会习惯用浏览器去调用controller的接口来测试.这一个过程普通的日志功能会记录sql参数等一些基本信息.但是假如项目越来越庞大,我们的包越来越多,在维护项目和 ...
- Spring全家桶系列–SpringBoot之AOP详解
//本文作者:cuifuan //本文将收录到菜单栏:<Spring全家桶>专栏中 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关 ...
随机推荐
- Co-prime
Co-prime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- elasticsearch 权威指南排序阅读笔记(六)
默认排序 默认查询是通过_source 准确性权重来排序 字段排序 { "query":{ "match":{ "productName": ...
- sublime text3环境与工具搭建
1,ctrl+shift+P ,打开包安装窗口如下: 2,选择 install Package,安装详解插件 1-安装 JsFormat插件,用于格式化js的插件,使用快捷键 Ctrl+Alt+F对J ...
- C#编程中,在页面上如何弹出确认删除对话框
对于页面完成一个操作后,弹出一个对话框提示是否“操作成功”.举例如下:Response.Write("<script>alert('删除成功!')</script>& ...
- oracle BBED 直接改动数据库block块
1.BBED配置 1)将相应文件放到$ORACLE_HOME/rdbms/mesg和$ORACLE_HOME/rdbms/lib中: --将lib中bbedus.msb和bbedus.msg ...
- RubyMine快捷键
RubyMine快捷键 ctrl+shift+up/down 向上/向下移动代码段 alt+shift+up/down 向上/向下移动代码行 ctrl+y 删除一行 ctrl+shift+f10 运行 ...
- LNMP编译安装(centos7+nginx1.9+mysql5.6+php5.5)
LNMP编译安装 # 需先配置IP # 软件包的路径 /usr/local/src yum install -y libjpeg-devel libpng-devel freetype-devel c ...
- Android Studio左边栏Project不见了?
非常多Android Stuio刚開始学习的人可能会一不小心把左边的Project栏给关了.结果发现找非常久也没找到怎么再打开Project栏. 如图.点击左下角button,Project就出来了.
- Fitnesse Page 简单使用
more information- http://www.fitnesse.org/FitNesse.UserGuide 1.1 Edit 点击该按钮,则可以开始编辑(如果该按钮没有出现,则这个页 ...
- 深度 | AI芯片之智能边缘计算的崛起——实时语言翻译、图像识别、AI视频监控、无人车这些都需要终端具有较强的计算能力,从而AI芯片发展起来是必然,同时5G网络也是必然
from:https://36kr.com/p/5103044.html 到2020年,大多数先进的ML袖珍电脑(你仍称之为手机)将有能力执行一整套任务.个人助理将变的更加智能,它是打造这种功能的切入 ...