ECP工程中日志管理模块原理解析
摘要: 本文将深入探讨ECP工程中的日志功能,从原理的角度来解析ECP日志模块的功能和实现方式,我们将更好地掌握ECP工程的日志功能。
一、日志管理简介
在ECP工程中,日志模块是一个至关重要的组成部分,用来记录业务模块的接口,通过合理的配置以及使用日志功能,可以帮助我们追踪程序的运行情况以及排查错误。在日志模块中提供三个列表:如下图所示
其中接口日志模块是采用@ApiLog注解的方式记录到xx-log-api表中,使用这种方式是为我们追踪程序的运行情况,针对接口方法等等进行接口性能分析,限流使用;
通用日志模块 bladeLogger则是有info,debug,error等等方法可以手动记录到xx-log-usual表中,我们可以在关键的业务实现方法上进行不同等级的日志。对于以上两种方式,使我们可以主动去记录分析业务情况,
错误日志模块则是记录系统未知的异常,便于我们排查问题。
以上模块的使用参见 https://htt.histo.cn/article/26 文章中的二、基础使用,2、记录到数据库章节
二、日志管理 - 原理介绍
通过查看的blade-starter-log-log 包文件,来讲述日志管理中通用日志、接口日志、错误日志的实现原理:
1、通用日志原理
通过BladeLogger类中的方法,使用事件监听器将这些日志信息发送到日志服务,记录到数据库中。
作用:通用日志主要用于记录系统中的一般操作和事件,如用户登录、数据修改等。它提供了对系统的行为进行追踪和审计的功能。
2、接口日志原理
通过@ApiLog注解拦截接口方法,使用事件监听器将这些日志信息发送到日志服务,记录到数据库中。如果出现未知异常则触发错误事件记录到错误日志中查看。
作用:接口日志用于记录系统中的接口请求和响应信息,包括请求参数、请求路径、响应状态等。它可以用于接口的调试、性能分析和错误追踪。
3、错误日志原理
通过处理 Throwable 类型的异常(包括除ServiceException和 SecureException 之外的所有异常),将异常信息记录到日志中,并返回自定义的错误响应。同时,如果配置属性中开启了错误日志记录,使用事件监听器将这些日志信息发送到日志服务,并记录请求的URI路径
作用:错误日志用于记录系统中的异常和错误信息,帮助开发人员快速定位和修复问题。它可以用于监控系统的健康状态和性能问题。特别是在生产环境中,用于追踪和解决潜在的问题,在记录错误日志时,需要准确捕获和记录异常信息,同时避免记录敏感数据。此外,要确保错误日志的及时处理和监控,以便及时发现和解决系统中的问题。
注意事项:
在记录日志时,需要注意保护用户的敏感信息,如密码、身份证号码等。可以对这些敏感信息进行脱敏处理或加密存储。
三、日志管理 - 疑问解答
1、使用事件推送记录日志有哪些优势?
答:通过使用事件监听器,不阻塞主业务流程,日志记录的逻辑与数据存储逻辑分开,可以存储到任意的存储器中,比如现在的数据库,或者日志文件等等;
通过使用事件监听器,可以针对性的对特定业务的日志进行处理,对于某些日志中可能有备注类似的字段 可以单独处理;
通过使用事件监听器,因为监听器只实现一个接口,可以方便维护和管理。
2、日志模块可以在目前的 ECP 中哪些模块可以使用?
答:该模块加载了spring-boot-starter-web 相关依赖,blade-starter-log相关依赖,并且如果想要日志记录到数据库中,该模块确保可以调动ecp-log模块的ILogClient 接口
3、该框架默认是写入数据库的,如果现在改为写入日志文件,并且只日志文件监听器生效如何做?
答:以讲解通用日志为例: 源码中使用了 @ConditonalOnMissingBean 注解,并且对应的beanName 为 usualEventListener 只要我们在对应模块中重写这个UsualLogListener 监听器 就可以实现自己的逻辑。
4、如果代码块用 try … catch … 捕捉异常以后,错误日志还会继续监听并执行记录日志的逻辑么?
答:错误日志模块功能是捕捉未知异常并记录日志的,如果已经使用了try…catch… 意味着已经是已知异常,手动进行了处理,并不会执行错误日志记录的逻辑。
全部评论