在Java开发中,我们经常会遇到一个棘手的问题:记录用户的操作行为。

某些操作是相对简单的,我们可以逐条记录。但是某些操作行为却很难记录,例如编辑操作。在某一次操作中,用户可能编辑了对象A的几个属性,而下一次操作中用户可能编辑了对象B的几个属性。如果我们针对对象A、对象B的属性变化分别进行记录,则整个操作十分复杂。而且,会与业务操作高度耦合。

而今天我们介绍的是一个叫ObjectLogger的系统,它是一个强大且易用的Java对象日志记录系统,能够分析任何对象的属性变化,实现对象变化的记录与查询。

因此,它可以应用在用户操作日志记录、对象属性变更记录等诸多场景中。简单易用,实为利器。

基于它,我们可以很方便地实现下面的效果。

该系统为github开源项目,地址为:https://github.com/yeecode/ObjectLogger

下面我们简单介绍下该系统。基于它,我们可以非常方便地搭建一套日志记录系统。

1 系统特点

该系统具有以下特点:

  • 一站整合:系统支持日志的记录与查询,开发者只需再开发前端界面即可使用。
  • 完全独立:与业务系统无耦合,可插拔使用,不影响主业务流程。
  • 应用共享:系统可以同时供多个业务系统使用,互不影响。
  • 简单易用:服务端直接jar包启动;业务系统有官方Maven插件支持。
  • 自动解析:能自动解析对象的属性变化,并支持富文本的前后对比。
  • 便于扩展:支持自定义对象变动说明、属性变动说明。支持更多对象属性类型的扩展。

2 快速上手

2.1 创建数据库

使用该项目的/server/database/init_data_table.sql文件初始化两个数据表。

2.2 启动Server

下载该项目下最新的Server服务jar包,地址为/server/target/ObjectLogger-*.jar。

启动下载的jar包。

java -jar ObjectLogger-*.jar --spring.datasource.driver-class-name={db_driver} --spring.datasource.url=jdbc:{db}://{db_address}/{db_name} --spring.datasource.username={db_username} --spring.datasource.password={db_password}

上述命令中的用户配置项说明如下:

  • db_driver:数据库驱动。如果使用MySql数据库则为com.mysql.jdbc.Driver;如果使用SqlServer数据库则为com.microsoft.sqlserver.jdbc.SQLServerDriver。
  • db:数据库类型。如果使用MySql数据库则为mysql;如果使用SqlServer数据库则为sqlserver。
  • db_address:数据库连接地址。如果数据库在本机则为127.0.0.1。
  • db_name:数据库名,该数据库中需包含上一步初始化的两个数据表。
  • db_username:数据库登录用户名。
  • db_password:数据库登录密码。

启动jar包后,系统默认的服务地址为:

http://127.0.0.1:8080/ObjectLogger/

访问上述地址可以看到下面的欢迎界面:

至此,ObjectLogger系统已经搭建结束,可以接受业务系统的日志写入和查询操作。

3 业务系统接入

该部分讲解如何配置业务系统来将业务系统中的对象变化记录到ObjectLogger中。

3.1 引入依赖包

在pom中增加下面的依赖:

com.github.yeecode.objectLogger ObjectLoggerClient {最新版本}

3.2 添加对ObjectLoggerClient中bean的自动注入

3.2.1 对于SpringBoot应用

在SpringBoot的启动类前添加@ComponentScan注解,并在basePackages中增加ObjectLoggerClient的包地址:com.github.yeecode.objectLoggerClient,如:

@SpringBootApplication@ComponentScan(basePackages={"{your_beans_root}

sqlserver大数据表操作慢_架构师必看!操作日志系统搭建秘技相关推荐

  1. java绘制图表控件_画图控件 Chart Control -Java架构师必看

    .NET3.5中中推出了图表控件,可以同时支持Web和WinForm两种方式,由于平时很少使用,一直网络 .NET3.5中中推出了图表控件,可以同时支持Web和WinForm两种方式,由于平时很少使用 ...

  2. java处理图像库函数_图象处理详解-Java架构师必看

    作者:未知    请与本人联系 在使用ASP的时候,我们时常要借助第三方控件来实现一些图象功能.而数据库 作者:未知     请与本人联系 在使用ASP的时候,我们时常要借助第三方控件来实现一些图象功 ...

  3. Java架构师必看的10本书

    转载自 Java架构师必看的10本书 1.大型网站系统与JAVA中间件实践 本书围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍. 从分布式系统的知识切入,让读者对分布式系统有基本的了解: ...

  4. 进阶Java架构师必看书:大型架构+框架+性能优化+中间件+分布式

    进阶Java架构师必看书:大型架构+框架+性能优化+中间件+分布式 优知学院 2018-09-05 07:21:00 1.大型网站技术架构:核心原理与案例分析 本书通过梳理大型网站技术发展历程,剖析大 ...

  5. 架构师的工作都干些什么?!想做架构师必看

    转载自  架构师的工作都干些什么?!想做架构师必看 之前有网友说想看架构师升级的文章,所以写了本文.先给本文中架构师做个定义:第一,能力上达到(似乎是废话),第二,公司肯承认,不仅能给架构师的头衔,更 ...

  6. sqlrelay mysql_数据库连接池SQL Relay安装使用-Java架构师必看

    SQLRelay按照其官网http://sqlrelay.sourceforge.net/indePHP SQL Relay按照其官网http://sqlrelay.sourceforge.net/i ...

  7. java定义dll文件位置,生成网站时如何设置固定的dll文件名?-Java架构师必看

    在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的; 如果要固定生成文网络 在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的; 如果要固定 ...

  8. freetextbox java_FreeTextBox-Java架构师必看

    作者:朱俊代码:C#关键字:FreeTextBox.流媒体出自:http://blog.csdn.nJavaScript 作者:朱俊 代码:C# 关键字:FreeTextBox.流媒体 摘要:最近一个 ...

  9. java chunked 解码_Tranfer-Encoding:chunked编码解析-Java架构师必看

    当不能预先确定报文体的长度时,不可能在头中包含Content-Length域来指明报文体长度,此时就网络 当不能预先确定报文体的长度时,不可能在头中包含Content-Length域来指明报文体长度, ...

最新文章

  1. MSSQL 2008里事务的一个问题
  2. php编程题试题和答案,比较基础的php面试题及答案-编程题部分
  3. Java简单多线程断点下载
  4. 【通知】有三AI GPU平台上线新功能,GPU/CPU可灵活选择
  5. boost::gil::channel_traits用法的测试程序
  6. PHP日期、时间戳相关的小程序
  7. 从逻辑回归到最大熵模型
  8. oracle11g session,Oracle11g中Killsession心得
  9. Angular之ngx-permissions的控制视图访问
  10. 用计算机解决问题 评课稿,总结反思:二年级数学lbrack;解决问题rsqb;评课稿
  11. 前端类名优秀命名例子_这是一篇需要花费你15分钟阅读的干货!浅谈前端工程化...
  12. 搞定面试官:咱们从头到尾再说一次 Java 垃圾回收
  13. oracle修改字段长度sql_Oracle RAC修改参数文件位置
  14. fedora 安装chrome
  15. IDEA调整输出字体的字体与大小
  16. WHERE+HAVING
  17. html自动获取今日的周名称,jquery怎么写显示今天后2周的日历
  18. 《黑客之道》- 全网最详细的kali系统安装教程
  19. 如何将 Excel 数据分组后按次序横向排列
  20. svn创建版本库以及创建其下目录

热门文章

  1. CSS实现单行与多行文字省略(truncation)
  2. canvas1:简单介绍、开始使用、画直线+虚线
  3. APPLE STORE
  4. 笔记36 Spring Web Flow——配置
  5. Java访问权限的范围
  6. Visual Studio 配色方案
  7. 信息设计中的“父子关系”
  8. 为何苦命干活的人成不了专家?
  9. 产品经理的职责(转)
  10. Core IO学习心得