自定义注解

通过自定义注解,来标示方法需不需要进行记录日志,如果该方法在访问时需要记录日志,则在该方法上标示该注解既可。

@Inherited
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OperateLog {
}

定义通知类

@Component
@Aspect
public class OperateAdvice {private static Logger log = Logger.getLogger(OperateAdvice.class);@Autowiredprivate OperationLogService operationLogService;@Around("execution(* cn.leon.controller.*.*(..)) && @annotation(operateLog)")public Object insertLogAround(ProceedingJoinPoint pjp , OperateLog operateLog) throws Throwable{System.out.println(" ************************ 记录日志 [start]  ****************************** ");OperationLog op = new OperationLog();DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");op.setOperateTime(sdf.format(new Date()));op.setOperateUser(DataUtils.getRandStr(8));op.setOperateClass(pjp.getTarget().getClass().getName());op.setOperateMethod(pjp.getSignature().getName());//获取方法调用时传递的参数Object[] args = pjp.getArgs();op.setParamAndValue(Arrays.toString(args));long start_time = System.currentTimeMillis();//放行Object object = pjp.proceed();long end_time = System.currentTimeMillis();op.setCostTime(end_time - start_time);if(object != null){op.setReturnClass(object.getClass().getName());op.setReturnValue(object.toString());}else{op.setReturnClass("java.lang.Object");op.setParamAndValue("void");}log.error(JsonUtils.obj2JsonString(op));operationLogService.insert(op);System.out.println(" ************************** 记录日志 [end]  *************************** ");return object;}}

方法上加注解

在需要记录日志的方法上加上注解@OperateLog。

@OperateLog
@RequestMapping("/insert")
public Result insert(@RequestBody Brand brand){try {brandService.insert(brand);return new Result(true,"操作成功");} catch (Exception e) {e.printStackTrace();return new Result(false,"操作失败");}
}

MySQL高级 - 案例 - AOP记录日志相关推荐

  1. MySQL高级 - 案例 - 系统性能优化 - 数据源配置

    实现方式 db.properties jdbc.write.driver=com.mysql.jdbc.Driver jdbc.write.url=jdbc:mysql://192.168.142.1 ...

  2. MySQL高级 - 案例 - 系统性能优化 - 读写分离概述

    性能优化 - 排序 在查询数据时,如果业务需求中需要我们对结果内容进行了排序处理 , 这个时候,我们还需要对排序的字段建立适当的索引, 来提高排序的效率 . 概述 在Mysql主从复制的基础上,可以使 ...

  3. MySQL高级 - 案例 - 系统性能优化 - 分页优化

    优化count 创建一张表用来记录日志表的总数据量: create table log_counter(logcount bigint not null )engine = innodb defaul ...

  4. MySQL高级 - 案例 - 系统性能优化分析

    系统中用户访问日志的数据量,随着时间的推移,这张表的数据量会越来越大,因此我们需要根据业务需求,来对日志查询模块的性能进行优化. 1) 分页查询优化 由于在进行日志查询时,是进行分页查询,那也就意味着 ...

  5. MySQL高级 - 案例 - 需求及环境准备

    需求分析 在业务系统中,需要记录当前业务系统的访问日志,该访问日志包含:操作人,操作时间,访问类,访问方法,请求参数,请求结果,请求结果类型,请求时长 等信息.记录详细的系统访问日志,主要便于对系统中 ...

  6. MySQL高级 - 案例 - 系统性能优化 - 索引优化

    性能优化 - 索引 当根据操作人进行查询时, 查询的效率很低,耗时比较长.原因就是因为在创建数据库表结构时,并没有针对于 操作人 字段建立索引. CREATE INDEX idx_user_metho ...

  7. 从前慢-Mysql高级及实战

    Mysql高级及实战 1 Linux 系统安装MySQL 1.1 下载Linux 安装包 https://dev.mysql.com/downloads/mysql/5.7.html#download ...

  8. Mysql高级04_主从复制、日志

    主从复制.日志 Mysql高级-day04 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1 ...

  9. Mysql高级-day04

    Mysql高级-day04 1. MySql中常用工具 1.1 mysql 该mysql不是指mysql服务,而是指mysql的客户端工具. 语法 : mysql [options] [databas ...

最新文章

  1. springmvc前台String转后台Date
  2. 香港小學一年級入學考試題
  3. 腾讯物联网开发者社区平台Tencent Things Network发布 让IoT应用开发快速安全
  4. c语言怎么读取mhx文件内容,C语言重新学习――基础杂类
  5. 五邑大学计算机组成原理试卷,2017年五邑大学信息工程学院807微机原理与应用[专业硕士]之计算机组成原理考研强化模拟题...
  6. C#图解教程读书笔记(第3章 类型、存储及变量)
  7. bootstrap jasny fileinput插件冲突问题解决
  8. python下载bt文件_Python实现解析Bit Torrent种子文件内容的方法
  9. 树莓派控制台达伺服控制器
  10. 天翼网关 ddns设置_UCloud物理云网关百G级集群设计实践
  11. 五个方向告诉你如何运营好一个公众号!
  12. 移动端自动化测试appium(6)--搭建模拟器和真机环境
  13. 动态内存的申请和非动态内存的申请_深圳罗湖“限制非深户申请公办学位”惹争议,官方权威回应来了...
  14. 读《平凡的世界》读路遥笔下的秀莲
  15. EndNote 20
  16. 将excel内列表每行数据分别填充到另一个word模板里-批量生成同一模板下的不同文档,word邮件功能
  17. 七、BDB JE与BDB Java API
  18. glut linux 安装包,linux 下glut.h使用
  19. 同步交互与异步交互(简单易懂)
  20. 鸟人的Android揭秘(8)——搭建Android SDK开发环境(四)

热门文章

  1. VS2003转VS2010 fatal error C1189: #error
  2. 第8章 线性时间排序
  3. 使用Moles框架实现HttpWebRequest与HttpWebResponse的单元测试
  4. Visual C++位图操作(1)
  5. mysql四:数据操作
  6. [linux][MongoDB] mongodb学习(一):MongoDB安装、管理工具、
  7. ![CDATA[ ]]
  8. Android笔记之平移View
  9. 量子计算: 1秒完成传统计算机100年的任务量
  10. 【HRS项目】Axure兴许问题解决---与SVN结合