asp.net-core-mvc – 如何创建从HttpContext.TraceIdentifier读
发布时间:2020-12-16 06:55:20 所属栏目:asp.Net 来源:网络整理
导读:我最近将Serilog集成到了几个.NET Standard类库中,包括一些MVC 6项目使用的类库.我想做的是使用HttpContext.TraceIdentifier丰富日志条目.我编写了一个动作过滤器,将HttpContext.TraceIdentifier设置为Correlation-ID请求标头值(如果存在): public override
我最近将Serilog集成到了几个.NET Standard类库中,包括一些MVC 6项目使用的类库.我想做的是使用HttpContext.TraceIdentifier丰富日志条目.我编写了一个动作过滤器,将HttpContext.TraceIdentifier设置为Correlation-ID请求标头值(如果存在):
public override void OnActionExecuting(ActionExecutingContext context) { StringValues correlationIds; Guid correlationId; if (!context.HttpContext.Request.Headers.TryGetValue(Constants.CorrelationIdHeaderName,out correlationIds) || correlationIds.Count != 1 || !Guid.TryParse(correlationIds[0],out correlationId)) { correlationId = _guidFactory.Random(); context.HttpContext.Response.Headers.Add(Constants.CorrelationIdHeaderName,correlationId.ToString("D")); } context.HttpContext.TraceIdentifier = correlationId.ToString("D"); base.OnActionExecuting(context); } 问题是,在请求的生命周期中,如何让Serilog知道相关ID?因为它看起来好像没有HttpContext.Current属性,所以我不确定如何创建一个可以工作的richver.这甚至可能吗? 解决方法
我不认为你需要更丰富的.
将{RequestId}放入接收器的outputTemplate会给我一个类似“0HL0GJPLR7AOD”的ID.如果我在记录内容之前设置了HttpContext.TraceIdentifier,那么{RequestId}会为我提供该ID,因此自定义ID也适用于{RequestId}. 我认为{RequestId}是一个Microsoft.Extensions.Logging功能,但它与serilog开箱即用(至少在你使用Serilog.Extensions.Logging时). 更新:不要忘记配置Enrich.FromLogContext(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – ‘InitializeCulture’不是其成员
- MVC学习二:基础语法
- Intranet ASP.NET网站的Windows身份验证和重新出现的Window
- 使用Ninject绑定WebApi过滤器属性
- asp.net – asp mvc“一个有潜在危险的Request.Form ……”
- asp.net-mvc – 如何使用统一依赖注入的Automapper?
- asp.net – 以编程方式访问httpRuntime maxRequestLength
- ASP.NET Web.config AppSettings性能
- asp.net-mvc – ASP.NET MVC 4 – 用户组的唯一路由?
- asp.net-mvc-2 – ASP.NET MVC SiteMap
推荐文章
站长推荐
- asp.net – 如何将razor变量作为参数传递给jquer
- asp.net – UserControl有IsPostBack,但是Contro
- asp.net下Repeater使用 AspNetPager分页控件
- asp.net-mvc-4 – MVC4如何设置cookie然后重定向
- iis-7 – ASP.NET MVC4在IIS7集成模式下不处理PO
- asp.net-mvc – 如何在HTML属性中添加剃刀值和字
- asp.net-mvc – 为MVC3 DateTime设置DataFormatS
- MVC 文件夹
- asp.net – 无法在文本框中键入double
- asp.net – 关于管理配置文件中的连接字符串的建
热点阅读