如何自定义Azure DiagnosticTraceMonitor输出

如何自定义Azure DiagnosticTraceMonitor输出,azure,azure-diagnostics,Azure,Azure Diagnostics,我正在为Azure服务设置日志记录。 目前,我在wadlogstable中收到的消息如下所示: <Properties> <EventTickCount SqlType="bigint">635193311660155844</EventTickCount> <DeploymentId SqlType="nvarchar(max)">deployment21(67) </DeploymentId> <Role S

我正在为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>

635193311660155844
部署21(67)
HTMLConverterWebRole
部署21(67).HTMLConverterWrapper.Cloud.htmlconverterwrebrole\u在\u 0中
2.
0
6900
14840
2013-11-06 12:39:25.8449 |错误|我的错误消息
我还没有去过生产环境,但我想用xml进行搜索很不方便。这方面的最佳实践是什么?我可以自定义其中的元素吗?我不认为我真的需要Pid,Tid,我也不认为EventId有什么用途

更新:我现在实际上正在使用NLog,但我正在按照下面的描述进行操作:


因此,它将日志发布到跟踪目标,据我所知,跟踪由DiagnosticMonitorRaceListener捕获,以Windows Azure表结束。因此,我使用NLog在生成的xml中格式化“Message”元素,“Level”和“EventId”元素取决于我调用的NLog方法(Logger.Debug*或Logger.Error*等),但我无法访问此xml的通用格式。此外,我可能更喜欢自定义日志记录表,其中包含“级别”、“日期”等专用字段,因此我不必在每个日志查询中解析它。

不幸的是,您无法控制由Windows Azure Diagnostics自动记录的数据格式。如果使用
自定义日志记录
,则可以获得细粒度的控制。对于自定义日志记录,您可以使用类似NLog的东西。在这种情况下,应用程序记录的数据存储在文件中,并使用Windows Azure Diagnostics自动传输到blob存储。

您还可以使用性能计数器+第三方工具来显示结果(即New Relic),或者您可以构建自己的仪表板


谢谢您的回答,请查看更新的问题。您能否提供更多关于如何在Azure中实现自定义日志记录的信息(链接或smth)?我想知道是否可以使用自定义架构登录自定义表。请查看以下日志:。对于我们的应用程序,我们基本上定制了他们的解决方案。在我们的例子中,我们只是通过诊断存储错误。对于其他所有内容(如应用程序跟踪等),我们使用NLog编写内容,NLog被传输到blob存储,然后从那里读取数据以推入表存储。