如何使用NLog在ASP.NET MVC中记录客户端IP地址的时间?

3

我使用ASP.NET MVC创建了一个门户网站,我需要记录打开该网站的任何客户端的IP地址。我使用NuGet向我的项目添加了NLog,并在Web.config中添加了以下标签:

  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
  </configSections>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="default" xsi:type="File" fileName="logs/app-log.txt" archiveFileName="logs/archives/app-log.{#}.txt" archiveEvery="Day" archiveNumbering="Rolling" maxArchiveFiles="7" />
    </targets>
    <rules>
      <logger name="*" writeTo="default" />
    </rules>
  </nlog>

如何设置我的应用程序,以记录除注册数据的计算机的IP地址之外的任何其他信息?感谢您的帮助!

1个回答

4

在目标配置中,可以修改布局以添加机器名称和客户端IP地址。

layout="Machine Name: ${machinename} - IP: ${aspnet-request-ip}

更多相关内容请参见此处:https://github.com/NLog/NLog/wiki/AspNet-Request-IP-Layout-Renderer 编辑:对于ASP.NET Web API和MVC项目,您可能需要使用NLog.Web。另外请注意,在本地主机时,您可能会得到::1作为IP地址,但在托管后它可以正常工作。

但它只给我机器名称而不是IP地址。 - Mostafa
它还会提供IP地址 IP: ${aspnet-request-ip} - Gowri Pranith Kumar Bayyana
抱歉,我检查了一下,它只给了我 ==>(机器名称:DESKTOP-9V3UCSU - IP:)。你认为这是因为我在本地计算机上检查我的门户网站吗? - Mostafa
@Mostafa,你是怎么解决这个问题的?我正在使用ASP.NET Web API,但是获取到的IP地址是空字符串。 - Kishan Vaishnav
对于其他人,我通过安装适用于ASP.NET的NLog.Web解决了这个问题。在本地中,我得到了::1作为值,但在服务器上托管时它可以工作。 - Kishan Vaishnav
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接