NLog - 捕获主机的 ip 地址

NLog - Capture host's ip address

我正在尝试在 .NET Core 2.0 应用程序中捕获主机/服务器的 IP 地址。 ${machinename} 变量获取服务器的名称,但是如何获取服务器的 IP 地址呢?名称对我的团队毫无意义,但 IP 地址很重要。

假设您有一个静态 IP 地址,那么您可以这样做:

var localIpAddress = LookupIpAddress(); // See 
NLog.GlobalDiagnosticsContext.Set("LocalIpAddress", localIpAddress);

然后你可以像这样使用它的目标布局:

layout="${longdate}|${level}|${logger}|${message}|${gdc=LocalIpAddress}"

如果您的 IP 地址有时会发生变化,那么您可以设置 background-thread/timer 来刷新 NLog-GDC 值。

另请参阅:https://github.com/NLog/NLog/wiki/Gdc-layout-renderer

NLog 4.6.8 已发布,其中包括 ${local-ip}:

https://github.com/NLog/NLog/wiki/Local-IP-Address-Layout-Renderer