基于SpringBoot的日志集中搜集、微服务使用及切面的使用
优采云 发布时间: 2020-08-13 12:01在先前文章中,我们介绍了SpringBoot的使用,详见:
一篇文章全面了解SpringBoot
,通过SpringBoot我们可以很方便的开发后台Restful插口,前端代码可通过调用那些插口调阅动态数据,本文主要介绍基于SpringBoot常常面临到的一些其他常见问题做个整理;
在一篇文章全面了解SpringBoot这篇文章中我们解决了:
配置文件如何管理,不同的环境配置文件如何分辨(如QA,生产和开发环境);
项目怎样做集成测试和单元测试:不光单元测试,还包括模拟用户的真实操作;
修改Java代码的时侯帮我手动重启服务器,以便能实时反映更改情况;
修改静态页面代码,网页无需自动刷新,帮我手动LiveReload;
部署打包如何实现一键布署?
项目怎样做到纵向扩充,即如何保持各个Web项目sessionid同步?
发布的项目怎么做监控,怎么无缝扩充监控指标?
项目中怎样剥离“脚本类”代码,比如公式定义等?
Web安全是否每次须要我自己实现,比如处理登入,登出,URI保护等?
繁杂的数据库操作我是否一定要写一大堆BO,VO,Service,DAO?
JavaBean中一定要写这么多Getter和Setter么?
maven中的依赖引入与排除,版本冲突是否非得我自己整理和排查?
项目进行中的数据库脚本管理如何管理?防止变更错误,跨数据库的脚本管理呢?
这篇文章我们进一步解决:
SpringBoot启用log4j记录日志,并发日志发往log4j日志中心(集中化日志管理与监控);
SpringBoot调用微服务Dubbo;
SpringBoot中使用切面:接口调用统计,API权限分级等;
日志集中式管理与监控
首先我们须要做一个Socket的服务端,基于Netty自定义榆林包体的TCP程序设计我们会在下一篇介绍并给出源码,这里记为logger-server程序,项目中,只须要引入client的maven jar即可,自定义的Log4j的Appender的实现较为简单,本文不做介绍,这一切都就绪后,在项目只须要引入maven和配置即可实现将log发往日志中心:
添加maven依赖
在资源目录下新建:
在代码任意处借助log4j写入日志,如:
至此,通过nettyIOAppender ref的Logger就会将日志发往日志中心,在那里你可以得到那个类,哪个方式,来自那个用户做了哪些处理,可以搜集到用户使用的浏览器信息,来源IP,访问来源等有效信息,可用于插口统计,用户行为搜集,排错跟踪等,下图是Netty服务端收到的消息:
Dubbo微服务的使用
在我们设计和实现后台构架时,我们会把公共的服务弄成微服务便于所有系统可以共享,比如在一个电商系统中,我们会把商品分类,商品详情信息,用户等信息封装成微服务,这样网站,客服系统,统计统计,CRM系统等会可以调用那些微服务,减少重复开发,而且微服务框架通常还提供负载均衡,版本控制,限流等众*敏*感*词*;
Alibaba的团队针对Dubbo的使用专门提供了SpringBoot的maven依赖工程:
在我们编撰后台服务时,如需调用微服务(消费方),我们只须要在Controller里将微服务的Service依赖注入进来即可:
并在中加入配置:
Aspect切面的使用
在我们项目开发中,我们常常会遇到统计插口调用次数以及API分级调用(有些插口须要特定API级别能够调用)的功能,这时我们就可以使用到切面,使用步骤如下: