Зарегистрировать URL-адрес текущей страницы с помощью NLog

Я пытаюсь зарегистрировать URL-адрес текущей страницы как часть нашего макета NLog. Я просмотрел переменные макета NLog и ничего не нашел.

Кто-нибудь знает, как получить текущий URL-адрес страницы в качестве переменной для макета? Также возможно ли просто извлечь доменное имя, чтобы его можно было использовать в исходном атрибуте EventLog?


person Mike737    schedule 02.09.2011    source источник
comment
Дополнение: я использовал ${aspnet-request:serverVariable=SERVER_NAME}, чтобы получить домен   -  person Mike737    schedule 08.09.2011


Ответы (3)


Используйте средство визуализации макета запроса Aspnet.

<target xsi:type="Trace" 
            name="trace" 
          layout="${message} ${aspnet-request:serverVariable=Url}" />

У вас есть полный доступ к свойствам запроса.

person ccellar    schedule 02.09.2011
comment
Не регистрирует строку запроса - person jjxtra; 13.10.2012
comment
@PsychoDad см. другие переменные URL на странице msdn.microsoft.com/en-us/library. /ms524602.aspx - person Danny Varod; 01.01.2013
comment
этот подход вернет только URL-адрес без строки запроса. Возможно, версия NLog имеет значение, что работает на сегодняшний день... - person Pawel Cioch; 23.10.2013
comment
Вот список серверных переменных: msdn.microsoft.com/en- нас/библиотека/ms524602.aspx - person Jonas; 26.03.2014

Я протестировал многие подходы, и только «элемент», похоже, работает в отношении http://msdn.microsoft.com/en-us/library/ms524602.aspx

метод = ${aspnet-request:item=HTTP_METHOD}

URL со строкой запроса = ${aspnet-request:item=HTTP_URL}

пользовательский агент/браузер = ${aspnet-request:item=HTTP_USER_AGENT}

и так далее...

ОБНОВЛЕНИЕ

В дополнение к моему ответу выше (я не помню, знал ли я это тогда или нет), но я где-то нашел (тоже не помню, где, было некоторое время назад), что NLog.Extended.dll< На /em> также необходимо ссылаться, чтобы использовать функции, относящиеся к ведению журналов ASP.NET, т.е. макеты с ${aspnet-...

person Pawel Cioch    schedule 22.10.2013
comment
Далее к этому. Вам также потребуется установить NLog.Web. - person Lee Taylor; 27.06.2020

Ответьте на .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}

e.g.

    <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

person gb2d    schedule 06.11.2020