目的:

  需要对一些事物的操作进行日志记录,如果在service内进行记录,大量的代码重复,并且维护比较麻烦。所以采用AOP的方式对service进行拦截。使用自定义注解的目的则是判断是否需要记录日志和传递额外的信息。

方式:

  参考后面的参考博客

1、首先新建自定义注解

  @interface 自定义注解:用来标记是否需要记录日志

  @Target 注解:用于描述注解的范围,比如需要注解在方法上,值为 METHOD,其他含义如下

      CONSTRUCTOR 描述构造器

      FILED 描述域

      LOCAL_VARIABLE 描述局部变量

      METHOD 描述方法

      PACKAGE 用户描述参数

      TYPE 用于描述类和接口

  @Retention :描述注解的生命周期,可取值:

      SOURCCE 在源文件中有效

      CLASS 在class 文件中有效

      RUNTIME 在运行时有效

  @Documented 在默认的情况下javadoc 命令不会将我们的注解生成载入到doc中,使用此,则告诉jdk让此注解生成到doc中去

  @Inherited 可继承的,比如子类继承父类的注解

package com.bkc.logging.annotaion;import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface LogWrite
{/*** @param模块名字*/String modelName() default "";/*** @param操作类型*/String option();
}

  

2、利用AOP 方式拦截

  配置AOP,这里采用注解方式

  使用通知,这里采用@Around 环绕通知,因为需要记录该方法是否被执行成功了

  实现@Around 方法中,记录日志:获取拦截的方法,判断该方法是否含有自定义注解,如果没有则不进行记录,否则,按照自己的方式进行记录。

参考博客:Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录

http://www.cnblogs.com/shipengzhi/articles/2716004.html (利用spring Aop 自定义注解解决日志和签名校验)

转载于:https://www.cnblogs.com/panie2015/p/5893549.html

利用SpringAOP 实现 日志输出相关推荐

  1. 如何利用Serilog的RequestLogging来精简ASP.NET Core的日志输出

    这是该系列的第一篇文章:在ASP.NET Core 3.0中使用Serilog.AspNetCore. 第1部分-使用Serilog RequestLogging来简化ASP.NET Core的日志输 ...

  2. python日志输出到屏幕,python日志写入文件

    python日志输出到屏幕,python日志写入文件 日志 日志是跟踪软件运行时所发生的事件的一种方法.软件开发者在代码中调用日志函数,表明发生了特定的事件.事件由描述性消息描述,该描述性消息可以可选 ...

  3. .NET Core的日志[2]:将日志输出到控制台

    对于一个控制台应用,比如采用控制台应用作为宿主的ASP.NET Core应用,我们可以将记录的日志直接输出到控制台上.针对控制台的Logger是一个类型为ConsoleLogger的对象,Consol ...

  4. iOS根据Debug和Release状态的变化来屏蔽日志输出

    今天在这里分享一个很实用的小技巧. 我们平时在开发应用的时候,经常会用到NSLog来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理. 我们在发布正式版的时候一定要屏蔽掉所有 ...

  5. FFMPEG 日志输出控制

    原文:https://blog.csdn.net/tea1896/article/details/48310579 1. FFMPEG 编码速度很慢,发现其中打印很多.因为打印是一个执行比较慢的动作, ...

  6. android studil打断点_【小技巧】AndroidStudio利用断点打印日志

    你是不是有着这样的烦恼: 调试程序常常需要到处打印日志 (没办法,debug需要) 打印日志需要对代码进行修改 (改来改去一不小心就忘了删除,或者破坏了代码) 改完代码还要重新编译 (编译一次要等待好 ...

  7. log4j中用变量配置日志输出文件位置

    http://sharep.blog.51cto.com/539048/143734 log4j中配置日志文件相对路径 2009-03-30 18:52:55 标签:log4j 休闲 职场 这篇文章写 ...

  8. Snort日志输出插件详解

    Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...

  9. unity 如何获取到屏幕中间_Unity通用渲染管线Shader日志输出工具

    这是侑虎科技第700篇文章,感谢作者邹春毅供稿.欢迎转发分享,未经作者授权请勿转载.如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨.(QQ群:793972859) 作者主页:https://w ...

最新文章

  1. 详解XMind各种上传分享分类
  2. Xcode错误“找不到开发人员磁盘映像”
  3. python【蓝桥杯vip练习题库】BASIC-11 十六进制转十进制
  4. OpenGL 纹理Textures
  5. SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因
  6. CentOS下PostgreSQL 主从实现之异步流复制(Hot Standby)
  7. mac版Unity Pro游戏开发工具如何创建和使用脚本
  8. 10个优质的Java练手项目
  9. PRINCE2 项目管理方法论框架介绍
  10. 卷帘快门与全局快门的区别
  11. colorbox iframe小记
  12. frp内网穿透(Mac远程连接公司windows)
  13. 针对灰产外挂的分析与研究
  14. 如何判断两条线(轨迹)的重叠区域
  15. 3000字告诉你如何渡过程序员菜鸟时期
  16. static 控件设置成透明后无法正常更新数据_win10又发布10月更新,提升视频体验,解决闪屏和打印问题...
  17. LangChain:Prompt Templates介绍及应用
  18. 计算机硬件及编程语言
  19. 内存管理中的 RSS 和 VSZ意思
  20. Homework 1 : Knowledge items of C++ Answer (part 1)

热门文章

  1. magento后台使用POST表单时,要使用必要参数form_key才能正常通讯
  2. static与get属性的作用
  3. Html5 小球键盘移动
  4. LeetCode(500)——键盘行(JavaScript)
  5. 句句真研—每日长难句打卡Day3
  6. JavaScript学习(六十三)—typeof和instanceof检测数据类型的异同
  7. php arff文件,python实现txt文件格式转换为arff格式
  8. 什么是单反相机?什么叫数码相机?
  9. 车险赔偿需要被保险人签字吗?
  10. 你遇到过最尴尬的糗事是什么?