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