使用NLog记录当前页面URL

Mik*_*737 16 asp.net nlog

我正在尝试将当前页面URL记录为NLog布局的一部分.我已经搜索了NLog布局变量并且没有提出任何结果.

有谁知道如何将当前页面URL作为布局的变量?也可以只提取域名,以便可以在EventLog源属性中使用它?

cce*_*lar 16

使用Aspnet请求布局渲染器.

<target xsi:type="Trace" 
            name="trace" 
          layout="${message} ${aspnet-request:serverVariable=Url}" />
Run Code Online (Sandbox Code Playgroud)

您拥有对请求属性的完全访问权限.


Paw*_*och 8

我测试了许多接近,只有"项目"似乎适用于http://msdn.microsoft.com/en-us/library/ms524602.aspx

method = $ {aspnet-request:item = HTTP_METHOD}

带查询字符串的 url = $ {aspnet-request:item = HTTP_URL}

user agent/browser = $ {aspnet-request:item = HTTP_USER_AGENT}

等等...

UPDATE

除了我上面的答案(我不记得我是否知道它回来了)但我发现某处(也不记得在哪里,不久前)NLog.Extended.dll也必须被引用以使用功能与ASP.NET日志相关的即.布局${aspnet-...


gb2*_*b2d 5

.NET Core 的答案,因为我尝试了上述方法,然后发现上述方法不适用于 .NET Core

THE FOLLOWING DO NOT WORK FOR .NET CORE

${aspnet-request:serverVariable=Url}
${aspnet-request:item=HTTP_URL}
Run Code Online (Sandbox Code Playgroud)

而是使用:

${aspnet-request-url}
${aspnet-request-querystring}
Run Code Online (Sandbox Code Playgroud)

例如

    <target name="jsonFile" xsi:type="File" fileName="log.json" archiveNumbering="DateAndSequence" archiveAboveSize="5000000" maxArchiveFiles="10">
      <layout xsi:type="JsonLayout">
        <attribute name="time" layout="${longdate}" />
        <attribute name="level" layout="${level:upperCase=true}"/>
        <attribute name="message" layout="${message}" />
        <attribute name="exception" layout="${exception:format=ToString,StackTrace:maxInnerExceptionLevel=2}" />
        <attribute name="machineName" layout="${machinename}" />
        <attribute name="ip" layout="${aspnet-request-ip}" />
        <attribute name="method" layout="${aspnet-request-method}" />
        <attribute name="url" layout="${aspnet-request-url}" />
        <attribute name="query" layout="${aspnet-request-querystring}" />
        <attribute name="postedBody" layout="${aspnet-request-posted-body}" />
        <attribute name="userAgent" layout="${aspnet-request-useragent}" />
      </layout>
    </target>
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅: https://nlog-project.org/config/? tab=layout-renderers&search=package:nlog.web.aspnetcore