.Net Web API 日志方案

这两周在星球,刚好完成了日志功能相关的课程。今天我们一起来聊聊,一个完整的日志方案与日志的实现。

一、日志的作用

任何系统都少不了日志功能,日志记录主要有以下4个作用:

1、问题排查:方便运维人员日常运维,开发人员定位系统问题、快速修复;

2、监控日志:记录系统功能使用情况、异常日志等,有助于监控系统资源的使用,方便后续调整;.

3、日志留痕:特别是与外部系统对接,方便协作排查、事故定责的证据等;

4、审计用户行为:记录系统用户的登录、功能操作明细等,方便监控敏感操作行为。

二、日志设计

系统日志设计主要包括以下7个内容:

1、日志配置:可以根据实际需求,配置日志的级别、格式、存储和轮换等参数。日志的级别包括调试信息、警告信息、错误信息和严重错误信息等。

2、日志内容:支持指定的格式记录系统日志信息,这些日志信息可以包括时间戳、模块名称、日志级别、消息内容等。

3、日志存储:将记录的日志信息存储到指定的位置,例如文件、数据库或远程服务器等。在实际项目开发,需要合理配置日志存储的位置和方式,以便于进行日志管理和分析。

4、日志轮换:随着时间的推移,日志文件可能会变得庞大,因此需要考虑日志轮换的问题。可以设置日志轮换的条件和方式,例如按照日期或文件大小进行轮换。

5、日志安全:日志涉及敏感数据的,我们可以通过访问控制和加密等措施,来保护日志信息的安全性,以避免日志信息泄露或被恶意利用。

6、日志分析:通过使用日志分析工具,可以对日志信息进行处理和分析,包括发现和解决问题、了解系统性能和用户行为等。

7、日志管理:定期对日志进行维护和管理,包括清理、备份和归档等操作,以确保日志信息的完整性和可靠性。

三、日志实现

下面梳理下星球的专栏,具体的日志实现方案。

3.1 采用Log4Net日志组件

Log4Net一款非常著名的记录日志开源组件,可以很好的满足日志配置、日志轮换的需求,只需简单配置就可以。

当然了,大家也可以根据自己的需求和喜欢,选择其他日志组件,比如NLog、Serilog、或者其他组件。

.Net Web API 日志方案

3.2 全局异常

在专栏课程里,我们采用全局异常捕捉机制,避免未处理的异常遗漏。

.Net Web API 日志方案

3.3 API请求日志记录

为了方便运维、以及跟踪系统,只是记录异常日志远远不够。

所以系统还记录了API请求日志,日志内容包含:请求地址、请求参数、返回结果、请求时间、接口花费时间、IP、异常信息等。

为了方便查询与排查,API日志存储在数据库中。

.Net Web API 日志方案

3.4 日志开关

还支持API接口日志配置,配置是否需要记录API请求日志,不配置默认是记录的。

.Net Web API 日志方案

3.5 API返回数据脱敏处理

数据安全与隐私保护是非常关键的,这时候我们就需要数据脱敏技术,来保护数据的安全。

针对一些客户的隐私数据,比如手机号码、生日、家庭地址等,在前端页面展示都要模糊显示。

我们系统支持在相应字段,配置脱敏转化器,来实现脱敏处理。

.Net Web API 日志方案

前端显示效果:

.Net Web API 日志方案

3.6 API请求日志脱敏处理

接口返回给前端需要脱敏处理,同样的在服务器记录的日志,针对敏感信息也要进行脱敏处理。

同样的只需在相应字段,配置脱敏转化器,来实现脱敏处理。

.Net Web API 日志方案

效果如下:

.Net Web API 日志方案

四、总结

根据以上实现的方案,可以满足绝大部分的中小型项目。如果是大型、分布式的项目,可以引入第三方日志系统,比如ELK,可以更好的满足日志分析与日志管理的需求。