Настройте JsNLog с NLog для ведения журнала RequestId под Asp.Net Core - PullRequest
0 голосов
/ 02 декабря 2018

После просмотра документов JsNLog и двух сообщений, которые я нашел на SO ( это и то ), все еще оставались вопросительные знаки о наилучшем решении для ведения журнала.RequestId от JsNLog для записей журнала Javascript.До сих пор я придумал это:

(1) В _Layout.cshtml используйте тег-помощник JsNLog, но поместите туда напрямую HttpContext.TraceIdentifier, а не используйтеJSNLog.JavascriptLogging.RequestId (ViewContext.HttpContext), который делает то же самое под капотом:

<jl-javascript-logger-definitions request-id="@ViewContext.HttpContext.TraceIdentifier" />

(2) Настройка NLog для использования WhenEmpty Layer Renderer .Он будет регистрировать HttpContext.TraceIdentifier для всех событий, для которых не установлен заголовок «JSNLog-RequestId» (представленный JsNLog javascript):

<target xsi:type="File" name="allfile" fileName="log-all-${shortdate}.log"
        layout="${aspnet-request:header=JSNLog-RequestId:whenEmpty=${aspnet-TraceIdentifier}} ${longdate}| ... other entries ... />

Убедитесь, что файл NLog.config содержит

<extensions>
  <!-- Make these renderers available: https://nlog-project.org/config/?tab=layout-renderers&search=package:nlog.web.aspnetcore -->
  <add assembly="NLog.Web.AspNetCore"/>
</extensions>

Таким образом, мы находим один и тот же RequestId (также известный как TraceIdentifier) ​​для записей журнала на стороне сервера и на стороне клиента, которые принадлежат друг другу.

Это решение работает и чувствует себя хорошо (после того, как комментарии @Rolf Kristensen были реализованы),У кого-нибудь есть лучше?

...