Asp.net core 如何配置NLog以获取IP地址.NET核心
我开发.net核心应用程序并使用NLog作为日志框架 如何设置NLog布局以获取远程IP地址 不幸的是,Asp.net core 如何配置NLog以获取IP地址.NET核心,asp.net-core,nlog,Asp.net Core,Nlog,我开发.net核心应用程序并使用NLog作为日志框架 如何设置NLog布局以获取远程IP地址 不幸的是,${aspnet request.serverVariable=remote\u addr}不受NLog.Web.AspNetCore的支持 可能我可以以某种方式访问httpContext.Connection.RemoteIpAddress。这是从NLog.Web.AspNetCore 4.4.0开始支持的 安装软件包 在你的配置中设置 用法 还包括NLog.Web.AspNetCore
${aspnet request.serverVariable=remote\u addr}
不受NLog.Web.AspNetCore的支持
可能我可以以某种方式访问httpContext.Connection.RemoteIpAddress。这是从NLog.Web.AspNetCore 4.4.0开始支持的
用法
还包括NLog.Web.AspNetCore 一个更简单的解决方案可能是使用NLog的选项
例如,在记录事件之前设置名为“IpAddress”的自定义值:
public IActionResult AnAction()
{
NLog.GlobalDiagnosticsContext.Set("IpAddress", HttpContext.Connection.RemoteIpAddress);
_logger.LogInformation("Something happened");
return View();
}
在nlog.config文件中,您可以在布局中使用该值,如下所示:
<target xsi:type="File" name="allfile" fileName="c:\nlog.log"
layout="${longdate} | ${message} | ${gdc:item=IpAddress}" />
public static void Main(string[] args)
{
CreateWebHostBuilder(args).UseNLog().Build().Run();
}
现在更容易了:
在NLog Web.AspNetCore 4.4.0和NLog.Web 4.5.0中引入
呈现客户端IP地址
在ASP.NET和ASP.NET核心中受支持
配置语法
${aspnet请求ip}
不需要其他任何东西还需要在.Build()之前调用.NLog()
大概是这样的:
<target xsi:type="File" name="allfile" fileName="c:\nlog.log"
layout="${longdate} | ${message} | ${gdc:item=IpAddress}" />
public static void Main(string[] args)
{
CreateWebHostBuilder(args).UseNLog().Build().Run();
}
非常有帮助!在第一个答案中也有一些重要的tib位需要注意。特别是如果您的HttpContextAccessor
不断出现null
更新,因为这现在是开箱即用的,那么如果您同时有多个用户,全局上下文会发生什么情况?然后,您是否确定正在记录正确的IP地址。也许考虑将IP地址保存到HtpCutExt.Currn.item中,然后使用nlog ${ASPNET项}检索它。