可以直接根据启动页面的提示访问相关地址来体验:
文章插图
3.1 引入依赖包
在pom中增加下面的依赖:
<dependency> <groupId>com.github.yeecode.objectlogger</groupId> <artifactId>ObjectLoggerClient</artifactId> <version>{最新版本}</version></dependency>3.2 添加对ObjectLoggerClient中bean的自动注入
3.2.1 对于SpringBoot应用
在SpringBoot的启动类前添加@ComponentScan注解,并在basePackages中增加ObjectLoggerClient的包地址:com.github.yeecode.objectlogger,如:
@SpringBootApplication@ComponentScan(basePackages={"{your_beans_root}","com.github.yeecode.objectlogger"})public class MyBootAppApplication {public static void main(String[] args) { // 省略其他代码 }}3.2.2 对于Spring应用
在applicationContext.xml增加对ObjectLoggerClient包地址的扫描:
<context:component-scan base-package="com.github.yeecode.objectlogger"></context:component-scan>3.3 完成配置
在application.properties中增加:
yeecode.objectLogger.serverAddress=http://{ObjectLoggerServer_address}yeecode.objectLogger.businessAppName={your_app_name}yeecode.objectLogger.autoLogAttributes=true
- ObjectLoggerServer_address:属性指向上一步的ObjectLoggerServer的部署地址,例如:127.0.0.1:12301
- your_app_name:指当前业务系统的应用名 。以便于区分日志来源,实现同时支持多个业务系统
- yeecode.objectLogger.autoLogAttributes:是否对对象的所有属性进行变更日志记录
4 日志查询系统运行后,可以通过http://127.0.0.1:12301/ObjectLoggerServer/log/query查询系统中记录的日志,并通过传入参数对日志进行过滤 。
文章插图
通过这里,我们可以查询下一步中写入的日志 。
5 日志展示ObjectLogger有前端React组件react-object-logger支持,用于进行日志信息的展示 。体验页面:react-object-logger 示例页面
展示效果如图:
文章插图
感兴趣的用户可以前往react-object-logger进行了解 。
同时也欢迎各位开发者开发面向其它前端技术栈的组件 。
6 日志写入业务系统在任何需要进行日志记录的类中引入LogClient 。例如:
@Autowiredprivate LogClient logClient;6.1 简单使用
直接将对象的零个、一个、多个属性变化放入List<BaseAttributeModel>后调用logAttributes方法发出即可 。List<BaseAttributeModel>置为null则表示此次对象无需要记录的属性变动 。例如,业务应用中调用:
logClient.logAttributes( "CleanRoomTask", 5, "Tom", "add", "Add New Task", "Create a cleanRoomTask", "taskName is :Demo Task", null);在ObjectLoggerServer中使用如下查询条件:
http://127.0.0.1:12301/ObjectLoggerServer/log/query?appName=ObjectLoggerDemo&objectName=CleanRoomTask&objectId=5查询到日志:
{ "respMsg": "SUCCESS", "respData": [ { "id": 1, "appName": "ObjectLoggerDemo", "objectName": "CleanRoomTask", "objectId": 5, "operator": "Jone", "operationName": "start", "operationAlias": "Start a Task", "extraWords": "Begin to clean room...", "comment": "Come on and start cleaning up.", "operationTime": "2019-07-04T06:53:40.000+0000", "attributeModelList": [ { "attributeType": "NORMAL", "attributeName": "status", "attributeAlias": "Status", "oldValue": "TODO", "newValue": "DOING", "diffValue": null, "id": 1, "operationId": 1 } ] } ], "respCode": "1000"}6.2 对象变动自动记录
该功能可以自动完成新老对象的对比,并根据对比结果,将多个属性变动一起写入日志系统中 。使用时,要确保传入的新老对象属于同一个类 。
例如,业务系统这样调用:
CleanRoomTask oldTask = new CleanRoomTask();oldTask.setId(5);oldTask.setTaskName("Demo Task");oldTask.setStatus("TODO");oldTask.setDescription("Do something...");CleanRoomTask newTask = new CleanRoomTask();newTask.setId(5);newTask.setTaskName("Demo Task");newTask.setStatus("DOING");newTask.setDescription("The main job is to clean the floor.");newTask.setAddress("Sunny Street");newTask.setRoomNumber(702);logClient.logObject( cleanRoomTask.getId().toString(), "Tom", "update", "Update a Task", null, null, oldTask, newTask);
推荐阅读
- 如何构建Google搜索自动完成功能
- 如何开淘宝网店的步骤手机 怎么用手机淘宝开店铺
- 双开门冰箱如何选购
- EC6价格能打,筹备电池资产公司,满血复活的蔚来如何加电?
- 如何穿得清凉又有型?10个搭配风格,时尚达人般的衣风你也能拥有
- 给花换盆拿不出来怎么办,花盆不砸如何换盆
- 养生之道 跟庄子学习如何养生保健
- 武夷山正山小种红茶功效如何
- 淘宝商家退店流程 淘宝网店如何退店
- 如何选择适合自己的婚礼主持人