2013-11-20 2 views
2

Я использую механизм ведения журнала NLog в своем приложении. Проблема, с которой я сталкиваюсь, заключается в том, что одновременные запросы попадают в ведение журнала приложений, выполняется асинхронно, и я не могу определить, какая строка принадлежит какому запросу. Есть ли способ в NLog установить конфигурацию для самого NLog, регистрирующего уникальный идентификатор запроса для каждого запроса?Регистрация уникальных идентификаторов запроса в текстовом файле NLog - для различения запросов

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<targets>  
<!-- add your targets here --> 
<target xsi:type="File" name="file" fileName="E:\IBELogs\AirAvailability\AirAvailability.log" layout="${longdate}  ${uppercase:${level}} ${message}" />  
</targets> 
<rules> 
<!-- add your logging rules here --> 
<logger name="*" minlevel="Trace" writeTo="file" />  
</rules> 
</nlog> 

ответ

1

Вам нужно будет создать свой уникальный идентификатор самостоятельно. Затем вы можете установить уникальный идентификатор в MDC и установить соответствующий формат макета, который выводит ваш уникальный из MDC в журнал.

+0

Спасибо Wilx ... Как вы, новичок, можете рассказать, как создать уникальный идентификатор запроса и установить его в MDC? пожалуйста – Sadhurthan

1

Мы столкнулись с аналогичной проблемой, и мы использовали идентификатор потока для идентификации строк в файле журнала. Поэтому указать расположение, как в следующем:

<target ... layout="threadID: ${threadid} ${message}"/> 

Если одновременные запросы различаются по своему характеру она может быть хорошей идеей, чтобы создать несколько лесорубов, по одному для каждого типа запроса. Тогда вы можете сделать что-то вроде этого:

<target ... layout="logger: ${logger} ${message}"/> 

Надеюсь, это поможет.

1

В NLog 4.1 $ {activityid} введено, см. here. Я не могу сказать, что MSDN documentation достаточно ясно о его ценности, но до сих пор это делает трюк для нас, так как каждый запрос в нашем приложении webAPI получает уникальный GUID и сохраняется по всему запросу, поскольку мы видим одно и то же значение в несколько операций Nlog в одном запросе.