写点什么

DotNet 项目利用拦截器记录访问日志

作者:为自己带盐
  • 2021 年 12 月 15 日
  • 本文字数:559 字

    阅读完需:约 2 分钟

背景

当前,各类云服务百花齐放,各大云服务厂商也都提供了各式各样的访问接口供开发者使用,从而接入大厂提供的某种能力。而在云服务平台的控制台里,我们会看到我们所使用的接口服务的使用情况,比如当日调用量,总调用量等等。然后平台再根据这个使用情况来计算结算费用。

所以话题就是,这个调用量是怎么统计的呢?

实例

在 dotnet 项目里,可以通过拦截器的功能,拦截所有 http 请求,从而实现接口或者页面的访问记录。

以 dotnetcore 项目为例,可以通过继承 IActionFilter 接口,并实现 OnActionExecuted 或者 OnActionExecuting 两个方法,来实现日志的记录。

比如我这里,分别记录了这两种类型的方法,在 OnActionExecuting 方法里,我记录了用户的访问地址,参数,客户端类型,访问时间,等内容。而在 OnActionExecuted 里,则记录了返回的内容。

具体的代码就不展示了,就是简单的拦截请求上下文,解析出想要的内容。

然后这里还想说一点的是,结合我之前写的一篇《日志归一管理的一种解决方案》

把日志内容,以特定的格式,写入到 redis 的队列里类型里,然后通过 logstash 组件,将日志实时的同步到 ElasticSearch。


最终,可以在 kibana 里来查看接口的调用情况。

而如果是比较传统的.net framework 项目,可以在 global.ashx 里的 Application_BeginRequest 里实现或调用相关日志记录的方法,从而将访问日志实时传输到队列里。


发布于: 2 小时前阅读数: 8
用户头像

学着码代码,学着码人生。 2019.04.11 加入

狂奔的小码农

评论

发布
暂无评论
DotNet项目利用拦截器记录访问日志