将NLog与.Net Core一起使用时,aspnet-request:serverVariable的其他替代方法吗?

时间:2019-11-17 17:28:40

标签: asp.net-core logging nlog

NLog GitHub所述,.Net Core不支持${aspnet-request:serverVariable=String}布局渲染器。
该文档并未提供serverVariable下许多可用变量的替代方法。

我的问题是,还有其他选择吗?想访问远程地址,服务器名称,端口等吗?还是我只需要编写一堆自定义布局渲染器documented here并通过依赖关系手动注入所有内容?

1 个答案:

答案 0 :(得分:1)

对于ASP.NET Core,有许多新的布局呈现器。原因是ASP.NET Core的API非常不同,并且服务器变量无法像在ASP.NET(非内核)中那样读取

ASP.NET Core当前有13个布局渲染,可渲染请求的一部分。

  • $ {aspnet-request}-ASP.NET请求变量。
  • $ {aspnet-request-contenttype}-ASP.NET内容类型标头(例如,application / json)
  • $ {aspnet-request-cookie}-ASP.NET请求cookie内容。
  • $ {aspnet-request-form}-ASP.NET请求表单内容。
  • $ {aspnet-request-headers}-ASP.NET标题键/值对。
  • $ {aspnet-request-host}-ASP.NET请求主机
  • $ {aspnet-request-ip}-客户端IP。
  • $ {aspnet-request-method}-ASP.NET请求方法(GET,POST等)。
  • $ {aspnet-request-posted-body}-ASP.NET发布的正文/有效载荷
  • $ {aspnet-request-querystring}-ASP.NET请求查询字符串。
  • $ {aspnet-request-referrer}-ASP.NET请求引荐来源。
  • $ {aspnet-request-url}-ASP.NET请求URL。
  • $ {aspnet-request-useragent}-ASP.NET请求用户代理。

另请参阅https://nlog-project.org/config/?tab=layout-renderers&search=package:nlog.web.aspnetcore

如果您需要其他功能,则可以创建自定义渲染器。如果您需要http请求,则可以使用:

AspNetLayoutRendererBase.Register("aspnet-request-myrenderer", (logevent, httpcontext, config) => ... );

您需要为此参考NLog.Web.AspNetCore包。