spring aop 实现操作日志记录
来源:互联网 发布:mac无法建立安全连接 编辑:程序博客网 时间:2024/06/05 19:54
1.自定义注解
@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface Logging { /** * 日志等级 * 例:需要保存修改记录的 * @Logging(level=AOPConstants.Key,value="用户信息修改功能",module=AOPConstants.User,type=AOPConstants.SavUpdate,mementoPos="0",mementoClass=User.class) * * 不需要保存修改记录,详细配置 * @Logging(level=AOPConstants.Key,value="用户信息新增功能",module=AOPConstants.User,type=AOPConstants.Add) * 简单配置 但是此时的level为normal 等级最低,如果配置文件loglevel为3或2的时候该方法不做记录type:Add * @Logging(value="用户信息新增功能",module=AOPConstants.User) * @return */ int level() default 1; /** * 日志详细信息 <br/> * 支持占位符 表示第几个参数 例如:"{0},{1},..." * * @return */ String value() default ""; /** * Description: 模块<br> * * @author MCZ<br> * @taskId <br> */ String module() default ""; /** * Description: 操作类型<br> * * @author MCZ<br> * @taskId <br> */ String type() default "Add"; /** * Description: 记录的参数对象的位置<br> * * @author MCZ<br> * @taskId <br> */ String mementoPos() default ""; /** * Description: 记录的参数对象的类型<br> * * @author MCZ<br> * @taskId <br> */ Class mementoClass() default Object.class;}
2.xml加入@AspectJ支持
<aop:aspectj-autoproxy />
*最好加在mvc的xml里
3.实现代码
@Aspect @Component public class LogAspect { /** * 日志记录器 */ private static Logger logger = LoggerFactory.getLogger(LogAspect.class); @Value("${logLevel}") private String logLevel; /** * 日志数据操作 */ @Autowired private OptsLogService optsLogService; /** * Description: 日志记录 <br> * * @author MCZ<br> * @taskId <br> * @param point <br> * @throws java.lang.Throwable <br> * @return <br> */ @Around("@annotation(xxx.xxxx.annotation.Logging)") public Object logByAnnotation(ProceedingJoinPoint point) throws java.lang.Throwable { // 注解式日志 MethodSignature joinPointObject = (MethodSignature) point.getSignature(); Method method = joinPointObject.getMethod(); Object result; Logging logging = method.getAnnotation(Logging.class);// 注解式日志 }
根据@Around(“@annotation(xxx.xxxx.annotation.Logging)”)匹配,Logging logging = method.getAnnotation(Logging.class)可 获取方法的说明参数
4.使用
@Logging(level = AOPConstants.Key, value = "用户信息修改功能", module = AOPConstants.User, type = AOPConstants.SavUpdate, mementoPos = "0", mementoClass = User.class) public void updateMergeUser(User u) { // TODO Auto-generated method stub }
阅读全文
0 0
- spring的AOP实现记录操作日志
- Spring AOP 实现系统操作日志记录
- Spring AOP 实现系统操作日志记录
- spring aop 实现操作日志记录
- Spring AOP实现日志记录
- Spring AOP实现日志记录
- spring aop 实现用户操作日志记录功能
- springMVC +Mybatis +spring aop 实现用户系统操作日志记录
- spring AOP的 操作日志记录功能
- Spring AOP 自定义注解记录操作日志
- Spring AOP 实现业务日志记录
- 采用Spring AOP实现日志记录
- Spring AOP 实现业务日志记录
- Spring AOP实现系统日志记录
- Spring AOP 实现业务日志记录
- spring aop自定义注解实现日志记录
- Spring AOP实现系统日志记录
- Spring Aop实现简单日志记录
- 超全面!设计师如何设计iPhoneX视觉稿
- JavaScript<二>
- Activity
- STM32 GPIO外部中断总结
- php登陆验证加密算法剖析
- spring aop 实现操作日志记录
- NODEJS爬虫链接记录
- 封装MyTask的类..
- http的keep-alive和tcp的keepalive区别
- 一千个不用 Null 的理由
- NAT 穿越技术(一)
- 网页出现503 service unavailable是什么意思?怎么解决?
- 大唐路由器对不同LAN接口分配不一样的IP
- laravel ckeditor上传图片