这两周在星球,刚好完成了日志功能相关的课程。今天我们一起来聊聊,一个完整的日志方案与日志的实现。
一、日志的作用
任何系统都少不了日志功能,日志记录主要有以下4个作用:
1、问题排查:方便运维人员日常运维,开发人员定位系统问题、快速修复;
2、监控日志:记录系统功能使用情况、异常日志等,有助于监控系统资源的使用,方便后续调整;
3、日志留痕:特别是与外部系统对接,方便协作排查、事故定责的证据等;
4、审计用户行为:记录系统用户的登录、功能操作明细等,方便监控敏感操作行为。
二、日志设计
系统日志设计主要包括以下7个内容:
1、日志配置:可以根据实际需求,配置日志的级别、格式、存储和轮换等参数。日志的级别包括调试信息、警告信息、错误信息和严重错误信息等。
2、日志内容:支持指定的格式记录系统日志信息,这些日志信息可以包括时间戳、模块名称、日志级别、消息内容等。
3、日志存储:将记录的日志信息存储到指定的位置,例如文件、数据库或远程服务器等。在实际项目开发,需要合理配置日志存储的位置和方式,以便于进行日志管理和分析。
4、日志轮换:随着时间的推移,日志文件可能会变得庞大,因此需要考虑日志轮换的问题。可以设置日志轮换的条件和方式,例如按照日期或文件大小进行轮换。
5、日志安全:日志涉及敏感数据的,我们可以通过访问控制和加密等措施,来保护日志信息的安全性,以避免日志信息泄露或被恶意利用。
6、日志分析:通过使用日志分析工具,可以对日志信息进行处理和分析,包括发现和解决问题、了解系统性能和用户行为等。
7、日志管理:定期对日志进行维护和管理,包括清理、备份和归档等操作,以确保日志信息的完整性和可靠性。
三、日志实现
下面梳理下星球的专栏,具体的日志实现方案。
3.1 采用Log4Net日志组件
Log4Net一款非常著名的记录日志开源组件,可以很好的满足日志配置、日志轮换的需求,只需简单配置就可以。
当然了,大家也可以根据自己的需求和喜欢,选择其他日志组件,比如NLog、Serilog、或者其他组件。
3.2 全局异常
在专栏课程里,我们采用全局异常捕捉机制,避免未处理的异常遗漏。
3.3 API请求日志记录
为了方便运维、以及跟踪系统,只是记录异常日志远远不够。
所以系统还记录了API请求日志,日志内容包含:请求地址、请求参数、返回结果、请求时间、接口花费时间、IP、异常信息等。
为了方便查询与排查,API日志存储在数据库中。
3.4 日志开关
还支持API接口日志配置,配置是否需要记录API请求日志,不配置默认是记录的。
3.5 API返回数据脱敏处理
数据安全与隐私保护是非常关键的,这时候我们就需要数据脱敏技术,来保护数据的安全。
针对一些客户的隐私数据,比如手机号码、生日、家庭地址等,在前端页面展示都要模糊显示。
我们系统支持在相应字段,配置脱敏转化器,来实现脱敏处理。
前端显示效果:
3.6 API请求日志脱敏处理
接口返回给前端需要脱敏处理,同样的在服务器记录的日志,针对敏感信息也要进行脱敏处理。
同样的只需在相应字段,配置脱敏转化器,来实现脱敏处理。
效果如下:
四、总结
根据以上实现的方案,可以满足绝大部分的中小型项目。如果是大型、分布式的项目,可以引入第三方日志系统,比如ELK,可以更好的满足日志分析与日志管理的需求。觉得好看 点个在看👇