通过aop添加日志管理
1.使用spring 的 aop 技术切到自定义注解上,所以先创建一个自定义注解类
- import java.lang.annotation.*;
- @Target(ElementType.METHOD) //注解放置的目标位置,METHOD是可注解在方法级别上
- @Retention(RetentionPolicy.RUNTIME) //注解在哪个阶段执行
- @Documented //生成文档
- public @interface MyLog {
- String value() default "";//功能模块名称
- int type() default 1;//用户具体操作类型代表,0:登录;1:查询;2:新增;3:修改;import com.alibaba.fastjson.JSONObject;
- import org.aspectj.lang.JoinPoint;
- import org.aspectj.lang.annotation.AfterReturning;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Pointcut;
- import org.aspectj.lang.reflect.MethodSignature;
- import org.springframework.stereotype.Component;
- import org.springframework.web.context.request.RequestAttributes;
- import org.springframework.web.context.request.RequestContextHolder;
- import org.springframework.web.context.request.ServletRequestAttributes;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import java.lang.reflect.Method;
- import java.util.Map;
- /**
- * 系统日志:切面处理类
- */
- @Aspect
- @Component
- public class SysLogAspect {
- @Resource
- private IViapLogInfoService viapLogInfoService;
- //定义切点 @Pointcut
- //在注解的位置切入代码
- @Pointcut("@annotation( com.harzone.lhps.viap.interceptor.MyLog)")
- public void logPoinCut() {
- }
- //切面 配置通知
- @AfterReturning("logPoinCut()")
- public void saveSysLog(JoinPoint joinPoint) {
- try {
- ViapLogInfo viapLogInfo = new ViapLogInfo();
//获取request- RequestAttributes ra = RequestContextHolder.getRequestAttributes();
- ServletRequestAttributes sra = (ServletRequestAttributes) ra;
- HttpServletRequest request = sra.getRequest();
//获取客户端ip- viapLogInfo.setIp(WebUtil.getHost(request));//保存日志
- //从切面织入点处通过反射机制获取织入点处的方法
- MethodSignature signature = (MethodSignature) joinPoint.getSignature();
- //获取切入点所在的方法
- Method method = signature.getMethod();
- //获取请求的类名
- // String className = joinPoint.getTarget().getClass().getName();
- //获取请求的方法名
- // String methodName = method.getName();
- //请求的参数
- // Object[] args = joinPoint.getArgs();
- //获取request中的json字符串
- JSONObject obj=GetRequestJsonUtils.getRequestJsonObject(request);
- // String params = JSON.toJSONString(obj);
- //获取操作
- MyLog myLog = method.getAnnotation(MyLog.class);
- if (myLog != null) {
- if(obj != null) {
- JSONObject jo = new JSONObject();
- if (myLog.status() == 1) {
- // viapLogInfo.setOperateCondition(className + "." + params);
- for (Map.Entry<String, Object> entry : obj.entrySet()) {
- if(entry.getValue() != null && !"".equals(entry.getValue())) {
- jo.put(entry.getKey(),entry.getValue());
- }
- }
- }
- viapLogInfo.setOperateCondition(jo.toString());
- }
- viapLogInfo.setValue(myLog.value());
- }
- viapLogInfoService.add(viapLogInfo);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
3.接下来就可以在需要监控的方法上添加 aop的自定义注解格式为 @+自定义注解的类名 @MyLog
- @PostMapping("login.json")
- @MyLog(value= "登录"")
- public JSONObject login(@RequestBody User userser) {
- return null;
- }
通过aop添加日志管理的更多相关文章
- [置顶] 使用sping AOP 操作日志管理
记录后台操作人员的登陆.退出.进入了哪个界面.增加.删除.修改等操作 在数据库中建立一张SYSLOG表,使用Sping 的AOP实现日志管理,在Sping.xml中配置 <!-- Spring ...
- Spring Boot 入门(五):集成 AOP 进行日志管理
本篇文章是接着 Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理写的,按照前面几篇博客的教程,可以搭建一个简单的项目,主要包含了 Pagehelper+MyBatis 分页 ...
- org.slf4j:slf4j-api:添加日志管理
org.slf4j:slf4j-api:添加日志管理 转 https://blog.csdn.net/wolfking0608/article/details/77855624 一个好的程序, 完 ...
- 【Java分享客栈】超简洁SpringBoot使用AOP统一日志管理-纯干货干到便秘
前言 请问今天您便秘了吗?程序员坐久了真的会便秘哦,如果偶然点进了这篇小干货,就麻烦您喝杯水然后去趟厕所一边用左手托起对准嘘嘘,一边用右手滑动手机看完本篇吧. 实现 本篇AOP统一日志管理写法来源于国 ...
- 【Java EE 学习 76 下】【数据采集系统第八天】【通过AOP实现日志管理】【日志管理功能分析和初步实现】
一.日志管理相关分析 1.日志管理是一种典型的系统级别的应用,非常适合使用spring AOP实现. 2.使用日志管理的目的:对系统修改的动作进行记录,比如对权限.角色.用户的写操作.修改操作.删除操 ...
- 【Java EE 学习 77 上】【数据采集系统第九天】【通过AOP实现日志管理】【通过Spring石英调度动态生成日志表】【日志分表和查询】
一.需求分析 日志数据在很多行业中都是非常敏感的数据,它们不能删除只能保存和查看,这样日志表就会越来越大,我们不可能永远让它无限制的增长下去,必须采取一种手段将数据分散开来.假设现在整个数据库需要保存 ...
- springBoot添加日志管理
一. 近期自己的项目想要一个记录日志的功能,而springboot本身就内置了日志功能,然而想要输入想要的日志,并且输出到磁盘,然后按天归档,或者日志的切分什么的,自带的日志仅仅具有简单的功能,百度了 ...
- 使用Spring AOP 实现日志管理(简单教程)
有时候,我们在做项目时会遇到这样的需求: 给XXX.java中的所有方法加上指定格式的日志输出. 针对这种指定类.或者指定方法进行共性操作的功能,我们完全可以使用Spring AOP来实现. 本文使用 ...
- 自定义注解-aop实现日志记录
关于注解,平时接触的可不少,像是 @Controller.@Service.@Autowried 等等,不知道你是否有过这种疑惑,使用 @Service 注解的类成为我们的业务类,使用 @Contro ...
随机推荐
- 测试驱动开发(TDD)及测试框架Mocha.js入门学习
组里马上要转变开发模式,由传统的开发模式(Developer开发,QA测试),转变为尝试TDD(Test-driven development,测试驱动开发)的开发模型.由此将不存在QA的角色,或者仅 ...
- ODBC驱动程序丢失解决方法
今天运行SqlDbx连接数据库的时候报错,提示没有找到相应的ODBC driver,打开ODBC管理面板一看,发现里面的驱动程序都不见了.这时想起今天卸载了一个成本核算软件后成这样的,网上搜索一下只需 ...
- CMAKE 安装
下载 解压 https://cmake.org/download/ https://cmake.org/files/v3.7/cmake-3.7.1.tar.gz yum install gcc - ...
- 如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里
我们在用ABAP代码消费外网的url时会遇到一些异常,比如ICM_HTTP_SSL_PEER_CERT_UNTRUSTED,这是因为请求的url所在的网站的SSL Server certificate ...
- SAP Netweaver和Hybris的数据库层
ABAP Netweaver 在SAP基于Netweaver的ABAP应用里,应用开发人员用Open SQL访问数据库, 这些Open SQL会被Database interface(数据库接口)转换 ...
- **611. Valid Triangle Number three pointer O(n^3) -> square(binary search larget number smaller than target)
Given an array consists of non-negative integers, your task is to count the number of triplets chose ...
- 【转载】#324 - A Generic Class Can Have More than One Type Parameter
A generic class includes one or more type parameters that will be substituted with actual types when ...
- 将xml转换成Json,数组,对象格式转换方法
xml字符串:$simplexml 转换成Json格式:json_encode($simplexml) 转换成数组格式:json_decode(json_encode($simplexml),TRUE ...
- removing vmware debugger from visual studio
removing vmware debugger from visual studio by Ross on 十月 14, 2010 at 5:30 下午 under Visual Studio | ...
- machine learning学习笔记
看到Max Welling教授主页上有不少学习notes,收藏一下吧,其最近出版了一本书呢还,还没看过. http://www.ics.uci.edu/~welling/classnotes/clas ...