2017-02-17 2 views
0

В настройке RESTful для клиента может быть отправлен идентификатор операции (как правило, GUID), чтобы отслеживать журналы запросов.Ведение идентификатора операции через запрос в веб-интерфейсе

Мой вопрос в том, что в веб-интерфейсе есть способ, свойственный .NET Web API для отслеживания идентификатора на запрос?

log4net имеет LogicalContext, который может отслеживать это. Проблема с LogicalContext заключается в том, что она специфична для log4net и не может использоваться с NLog. В LogicalContext нет способа получить список всех ключей. Я должен знать ключ перед рукой, в случае каких-либо проблем, если один API называет его «идентификатором операции», а другой API называет его «идентификатором активности».

ответ

1

Возможно, использовать Guid 'Trace.CorrelationManager.ActivityId' для CorrelationId?

Он может быть настроен для каждого запроса в вашем классе приложения (наследуется от System.Web.HttpApplication) с использованием метода Application_BeginRequest.

https://github.com/NLog/NLog/wiki/Trace-Activity-Id-Layout-Renderer

+0

спасибо. Однако есть проблема: Trace.CorrelationManager.ActivityId не кажется последовательным. Если в запросе я установил ActivityId как определенное значение, и во время запроса я создаю несколько потоков, то внезапно значение ActivityId в этих потоках не равно, в то время как LogicalThreadContext в log4net согласован для нескольких потоков. – Husain

+1

@Husain NLog имеет MappedDiagnosticsLogicalContext (MDLC), когда асинхронный логический контекст перемещается между потоками. https://github.com/NLog/NLog/wiki/MDLC-Layout-Renderer –