Я настраиваю ведение журнала для службы 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. Кроме того, я, вероятно, предпочел бы настраиваемую таблицу журналов с выделенными полями для «Уровень», «Дата» и т. Д., Чтобы мне не приходилось анализировать ее в каждом запросе журнала.