加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

架构师必看!操作日志系统搭建秘技

发布时间:2019-07-04 20:44:37 所属栏目:Windows 来源:程序员进阶架构师
导读:副标题#e# 在Java开发中,我们经常会遇到一个棘手的问题:记录用户的操作行为。 某些操作是相对简单的,我们可以逐条记录。但是某些操作行为却很难记录,例如编辑操作。在某一次操作中,用户可能编辑了对象A的几个属性,而下一次操作中用户可能编辑了对象B
副标题[/!--empirenews.page--]

在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中增加下面的依赖:

  1. <dependency> 
  2.  <groupId>com.github.yeecode.objectLogger</groupId> 
  3.  <artifactId>ObjectLoggerClient</artifactId> 
  4.  <version>{最新版本}</version> 
  5. </dependency> 

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

3.2.1 对于SpringBoot应用

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

  1. @SpringBootApplication 
  2. @ComponentScan(basePackages={"{your_beans_root}","com.github.yeecode.objectLogger"}) 
  3. public class MyBootAppApplication { 
  4. public static void main(String[] args) { 
  5.  // 省略其他代码 
  6.  } 

3.2.2 对于Spring应用

在applicationContext.xml增加对ObjectLoggerClient包地址的扫描:

  1. <context:component-scan base-package="com.github.yeecode.objectLoggerClient"> 
  2. </context:component-scan> 

3.3 完成配置

在application.properties中增加:

  1. object.logger.add.log.api=http://{ObjectLogger_address}/ObjectLogger/log/add 
  2. object.logger.appName={your_app_name} 
  3. object.logger.autoLog=true 
  • ObjectLogger_address:属性指向上一步的ObjectLogger的部署地址,例如:127.0.0.1:8080
  • your_app_name:指当前业务系统的应用名。以便于区分日志来源,实现同时支持多个业务系统
  • object.logger.autoLog:是否对对象的所有属性进行变更日志记录

至此,业务系统的配置完成。已经实现了和ObjectLogger的Server端的对接。

4 日志查询

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!