Как настроить выходные данные Azure DiagnosticTraceMonitor

Я настраиваю ведение журнала для службы Azure. В настоящее время сообщения, которые я получаю в wadlogstable, выглядят так:

<Properties>
  <EventTickCount SqlType="bigint">635193311660155844</EventTickCount>
  <DeploymentId SqlType="nvarchar(max)">deployment21(67)    </DeploymentId>
  <Role SqlType="nvarchar(max)">HTMLConverterWebRole    </Role>
  <RoleInstance SqlType="nvarchar(max)">deployment21(67).HTMLConverterWrapper.Cloud.HTMLConverterWebRole_IN_0   </RoleInstance>
  <Level SqlType="int">2</Level>
  <EventId SqlType="int">0</EventId>
  <Pid SqlType="int">6900</Pid>
  <Tid SqlType="int">14840</Tid>
  <Message SqlType="nvarchar(max)">2013-11-06 12:39:25.8449|ERROR|My error message</Message>
</Properties>

Я еще не был на производстве, но полагаю, что искать в xml довольно неудобно. Каковы наилучшие методы для этого? Могу ли я настроить элементы в нем? Я не думаю, что мне действительно нужны Pid, ​​Tid, также я не вижу смысла в EventId.

Обновление: сейчас я использую NLog, но делаю это так, как описано здесь: http://awkwardcoder.blogspot.com/2012/03/getting-nlog-working-with-azure-is-as.html

Таким образом, он отправляет журналы в цель трассировки, и, как я понимаю, трассировки перехватываются DiagnosticMonitorTraceListener, заканчиваясь таблицей Windows Azure. Поэтому я использую NLog для форматирования элемента «Сообщение» в результирующем xml, а также элементы «Уровень» и «EventId» зависят от того, какой метод NLog я вызываю (Logger.Debug* или Logger.Error* и т. д.), но у меня нет доступа к общему формату этого xml. Кроме того, я, вероятно, предпочел бы настраиваемую таблицу журналов с выделенными полями для «Уровень», «Дата» и т. Д., Чтобы мне не приходилось анализировать ее в каждом запросе журнала.


person ptkvsk    schedule 06.11.2013    source источник


Ответы (2)


К сожалению, вы не можете контролировать формат данных, которые автоматически регистрируются службой диагностики Windows Azure. Вы можете получить мелкозернистый контроль, если используете custom logging. Для пользовательского ведения журнала вы можете использовать что-то вроде NLog. В этом случае данные, зарегистрированные вашим приложением, хранятся в файлах и автоматически передаются в хранилище BLOB-объектов с помощью диагностики Windows Azure.

person Gaurav Mantri    schedule 06.11.2013
comment
Спасибо за ваш ответ, пожалуйста, смотрите обновленный вопрос. Не могли бы вы предоставить дополнительную информацию (ссылку или что-то еще) о том, как реализовать пользовательское ведение журнала в Azure? Мне интересно, можно ли войти в пользовательскую таблицу с пользовательской схемой. - person ptkvsk; 06.11.2013
comment
Взгляните на этот пост в блоге: blogs.msdn.com/b/windowsazure/archive/2013/06/28/. Для нашего приложения мы в основном настроили их решение. В нашем случае мы сохраняем ошибки только через диагностику. Для всего остального (например, трассировка приложений и т. д.) мы пишем данные с помощью NLog, которые передаются в хранилище BLOB-объектов, а затем считываются оттуда для отправки в хранилище таблиц. - person Gaurav Mantri; 06.11.2013

Вы также можете использовать счетчики производительности + сторонние инструменты для отображения результатов (например, New Relic) или создать собственную панель мониторинга.

http://www.windowsazure.com/en-us/develop/net/common-tasks/performance-profiling/ http://www.codeproject.com/Articles/303686/Windows-Azure-Diagnostics-Performance-Counters-In http://michaelwasham.com/2011/09/19/windows-azure-diagnostics-and-powershell-performance-counters/

person Thiago Custodio    schedule 06.11.2013