Asp.net core mvc Net Core NLog.Web“;aspnet请求:标题“;物业用途?

Asp.net core mvc Net Core NLog.Web“;aspnet请求:标题“;物业用途?,asp.net-core-mvc,nlog,Asp.net Core Mvc,Nlog,是否有任何方法可以使用带有一个参数的“aspnet request:header”属性记录所有头?或者我应该像“aspnet请求:header=MyHeader”那样一个接一个地获取头,并在插入之前将它们合并到一个参数中吗?我有很多标题,不想单独添加它们,如果可能的话,我需要一种快速的方法来记录它们。目前只支持一次一个标题,正如它所说的那样 string header=httpRequest.Headers[this.header] 编辑:您可以将其插入NLog,如下所示: 使用系统; 使用系统

是否有任何方法可以使用带有一个参数的“aspnet request:header”属性记录所有头?或者我应该像“aspnet请求:header=MyHeader”那样一个接一个地获取头,并在插入之前将它们合并到一个参数中吗?我有很多标题,不想单独添加它们,如果可能的话,我需要一种快速的方法来记录它们。

目前只支持一次一个标题,正如它所说的那样

string header=httpRequest.Headers[this.header]

编辑:您可以将其插入NLog,如下所示:

使用系统;
使用系统文本;
使用Microsoft.AspNetCore.Http;
使用NLog.Config;
使用NLog.LAYUTRENDERS;
使用NLog.Web.Internal;
命名空间NLog.Web.LayoutRenderers
{
/// 
///呈现ASP.NET核心的所有标头
/// 
/// 
///
///${aspnet请求所有头文件}
///
/// [LayoutRenderer(“aspnet请求所有标头”)] 公共类AspNetRequestAllHeadersLayoutRenderer:AspNetLayoutRenderBase { 受保护的覆盖void DoAppend(StringBuilder、LogEventInfo和logEvent) { var httpRequest=HttpContextAccessor.HttpContext.TryGetRequest(); if(httpRequest==null | | httpRequest.Headers==null) { 返回; } foreach(httpRequest.Headers中的var kpv) { if(标题!=null) { builder.Append(kpv.Key); builder.Append(=); 附加值(kpv.Value); } } } } }
注册它(startup.cs)

另见

用法


是否存在此“所有标题”属性?你有计划吗?或者,如果可能的话,我想做一些开发,在代码中添加一些特性:)不确定是否有需求,但我确实包含了now类。见下文。(尚未测试)非常感谢@Julian:)
    ConfigurationItemFactory.Default.LayoutRenderers
                        .RegisterDefinition("aspnet-request-all-headers", typeof(AspNetRequestAllHeadersLayoutRenderer  ));
 ${aspnet-request-all-headers}