日志收集目前应用比较广泛的是ELK系统,但是对于我们的项目,ELK系统相对来说比较重量级,如果对接已经建成的ELK系统需要调整日志架构,更重要的是ELK日志系统的预警功能不完善,需要额外的插件,不能满足我们按照错误级别、功能负责人等场景,实现实时、分类通知的需求。因此,基于SpringCloud微服务平台,我们自己开发了一个轻量级的错误日志信息持久化及通知的功能。
一、整体设计思路
所有的微服务依赖通用的全局异常处理模块,全局异常处理模块会拦截程序中未处理的异常及主动抛出的异常。拦截到的异常经过识别组装为标准格式,采用异步方式,利用SpringCloud微服务间的通信模式,统一进行持久化处理及分类通知。做到对现有业务代码零侵入。
二、项目实现框图
三、具体实现步骤
1.所有继承CommonException的异常类增加一个构造函数,用于指定错误的级别errorLevel。
errorLevel等于0是默认级别,表示最低级别错误日志,此级别的日志只持久化而不进行错误通知。对于用户主动抛出的异常,可以自主构造包含errorLevel参数的异常,errorLevel数字越大级别越高,通知级别也相应提高。当前设定erro