我正在尝试将当前页面URL记录为NLog布局的一部分。我已经搜索了NLog布局变量并且没有提出任何建议。
有谁知道如何将当前页面网址作为布局的变量?也可以只提取域名,这样就可以在EventLog源属性中使用了吗?
答案 0 :(得分:16)
使用Aspnet-request layout renderer。
<target xsi:type="Trace"
name="trace"
layout="${message} ${aspnet-request:serverVariable=Url}" />
您可以完全访问request properties。
答案 1 :(得分:8)
我测试了很多人,只有“项目”似乎与http://msdn.microsoft.com/en-us/library/ms524602.aspx
有关method = $ {aspnet-request: item = HTTP_METHOD}
带有查询字符串的 = $ {aspnet-request: item = HTTP_URL}
user agent / browser = $ {aspnet-request: item = HTTP_USER_AGENT}
依旧......
<强>更新强>
除了我上面的答案(我不记得我是否知道它回来了)但我找到了某个地方(也不记得在哪里,不久前) NLog.Extended必须引用.dll 以使用与ASP.NET日志相关的功能,即。布局${aspnet-...
答案 2 :(得分:1)
.NET Core的答案,我在发现以上内容不适用于.NET Core之前尝试了以上
THE FOLLOWING DO NOT WORK FOR .NET CORE
${aspnet-request:serverVariable=Url}
${aspnet-request:item=HTTP_URL}
代替使用:
${aspnet-request-url}
${aspnet-request-querystring}
例如
<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>
有关更多信息,请参见: https://nlog-project.org/config/?tab=layout-renderers&search=package:nlog.web.aspnetcore