架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 26578|回复: 2

[资料] 【实战】Spring Cloud 记录所有请求接口日志至 MongoDB

[复制链接]
发表于 2021-8-15 21:47:53 | 显示全部楼层 |阅读模式
在做微服务开发中,日志是非常基础的工作,记录接口请求日志信息,有助于我们排除问题,有助于复现问题。日志内容包含:链接、请求方法、useragent、header、当前微服务节点机器ip、节点机器名、运行环境、请求者ip、耗时等信息。

使用 spring cloud 框架的 filter 拦截器可以拦截所有接口的请求信息记录,将请求记录持久化到 mongodb 中,先看效果图如下:

QQ截图20210806180054.jpg

接口日志结构体

首先,新建一个对象,定义日志的结构,代码如下:

日志过滤器

新建 RequestLoggerFilter 过滤器,继承 Filter 接口,并且实现 doFilter 方法,此过滤器优先级最高,可以通过 @Order 注解设置过滤器优先级,过滤器会记录 POST/PUT 提交的内容(排除 multipart/form-data 文件提交记录),代码如下:

Spring Cloud 获取客户端 ip 地址
https://www.itsvse.com/thread-10022-1-1.html

Spring Cloud Filter 通过 ContentCachingRequestWrapper 获取请求内容
https://www.itsvse.com/thread-10030-1-1.html

Spring Boot 之 HandlerInterceptor 拦截器的使用
https://www.itsvse.com/thread-10001-1-1.html

日志持久化到 MongoDB

接口日志肯定是要持久化到硬盘中的,为了不影响接口的正常使用,这里会将接口的日志丢入到线程安全的队列中,程序会开启一个线程,线程会消费队列里面的数据,将数据存入到 MongoDB 中,使用 maven 引入依赖。

【实战】CentOS 7 安装 mongodb 5.0.1 教程
https://www.itsvse.com/thread-10025-1-1.html

Linux 正确的关闭 mongodb 数据库
https://www.itsvse.com/thread-10021-1-1.html
mongodb 的配置,请参考:org.springframework.boot.autoconfigure.mongo.MongoProperties

application.yml 配置如下:

uri格式:用户名:root、密码:aaaaaa、数据库地址:127.0.0.1、端口号:27017、库名:test
例如:mongodb://root:aaaaaa@127.0.0.1:27017/test

如果用户名或则密码包含特殊符号,请使用 url 编码,否则会报错!

调用 MongoTemplate 将数据持久化至数据库中,代码如下:

(完)





上一篇:OpenSSL 自签证书部署至 IIS 和 SLB
下一篇:.NET 插件的“动态替换”
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2021-11-18 11:14:19 | 显示全部楼层
记录响应日志,如下图:

QQ截图20211118111226.jpg



码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-10-14 15:19:47 | 显示全部楼层
学习了,正好需要
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-6-15 21:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表