NLog - как записать всю информацию запроса - PullRequest
5 голосов
/ 19 июля 2011

Nlog имеет некоторые функции ведения журнала ASP.NET (см. Список средств визуализации макета ), например,

${aspnet-request}

Для элемента формы журнала необходимо знать имя элемента,

 ${aspnet-request:form=myVariable}

Но как логировать все из предметов, которые хамятся в неизвестность?Например

 ${aspnet-request:form}

1 Ответ

1 голос
/ 02 октября 2012

Я бы сам написал свой собственный LayoutRenderer (на самом деле, недавно сделал что-то почти идентичное) - одна из лучших частей о NLog - насколько расширяема фреймворк.В зависимости от того, как вы выполняете настройку, будет зависеть, как вы будете ссылаться / загружать свой пользовательский компоновщик, но на самом деле небо - это предел того, что вы можете сделать.

Вдобавок ко всему, вы можете воспользоваться одним из двух подходов с помощью пользовательского средства визуализации: обернуть / расширить существующее средство отображения запросов asp и просто проксировать все вызовы, или таким же способом получить объект запроса.nlog делает (это сложно; он вызывает захват экземпляра COM, если память служит).

Подход, который я выбрал, заключался в том, чтобы встроить коллекцию NameValueCollection в сам исходящий объект LogEventInfo (в словаре свойств), а затем используйте настраиваемое средство визуализации макета для извлечения этой коллекции и ее рендеринга.

...