Ocelot中文文档-请求Id和关联Id(转)
原文地址:https://www.cnblogs.com/snaildev/articles/9151757.html
Ocelot支持一个客户端以头的形式发送requestid。 如果设置了,一旦中间件管道中可用,Ocelot便会使用这个requestid进行日志记录。 Ocelot也会使用指定头将requireid转发给下游服务。
如果在日志配置中你设置IncludeScopes为true,你还可以在日志中获取asp.net core的请求id。
为了是用requestid,有两种选择。
全局
在ocelot.json的GlobalConfiguration配置块中如下设置。这样所有进入Ocelot的请求都会起作用。
1
2
3
|
"GlobalConfiguration" : { "RequestIdKey" : "OcRequestId" } |
我建议使用GlobalConfiguration,除非你真的需要它是指定ReRoute的。
ReRoute
如果你想覆盖全局设置,在ocelot.json的特定ReRoute中添加如下设置。
1
|
"RequestIdKey" : "OcRequestId" |
一旦Ocelot识别出与ReRoute对象匹配的请求,它将根据ReRoute的配置来设置requestid。
这可能会导致一下困惑。如果你在GlobalConfiguration中设置了requestid,可能在ReRoute被匹配前是一个,匹配后是另一个,因为requestid的key会变。这是因为设计如此,而且这是我目前能想到的最好的解决方案了。在这种情况下OcelotLogger会在日志中记录当前requestid和上一个requestid。
下面的例子是debug级别下一个正常请求的日志记录。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
dbug: Ocelot.Errors.Middleware.ExceptionHandlerMiddleware[0] requestId: asdf, previousRequestId: no previous request id , message: ocelot pipeline started, dbug: Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware[0] requestId: asdf, previousRequestId: no previous request id , message: upstream url path is {upstreamUrlPath}, dbug: Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware[0] requestId: asdf, previousRequestId: no previous request id , message: downstream template is {downstreamRoute.Data.ReRoute.DownstreamPath}, dbug: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0] requestId: asdf, previousRequestId: no previous request id , message: EndpointRateLimiting is not enabled for Ocelot.Values.PathTemplate, dbug: Ocelot.Authorisation.Middleware.AuthorisationMiddleware[0] requestId: 1234, previousRequestId: asdf, message: /posts/ {postId} route does not require user to be authorised, dbug: Ocelot.DownstreamUrlCreator.Middleware.DownstreamUrlCreatorMiddleware[0] requestId: 1234, previousRequestId: asdf, message: downstream url is {downstreamUrl.Data.Value}, dbug: Ocelot.Request.Middleware.HttpRequestBuilderMiddleware[0] requestId: 1234, previousRequestId: asdf, message: setting upstream request, dbug: Ocelot.Requester.Middleware.HttpRequesterMiddleware[0] requestId: 1234, previousRequestId: asdf, message: setting http response message, dbug: Ocelot.Responder.Middleware.ResponderMiddleware[0] requestId: 1234, previousRequestId: asdf, message: no pipeline errors, setting and returning completed response, dbug: Ocelot.Errors.Middleware.ExceptionHandlerMiddleware[0] requestId: 1234, previousRequestId: asdf, message: ocelot pipeline finished, |
如需转载,请在显眼处标明本文链接,谢谢。
笨一点没关系,只要自己不放弃自己
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器