我正在为 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 中格式化我的“Message”元素,“Level”和“EventId”元素取决于我调用的 NLog 方法(Logger.Debug* 或 Logger.Error* 等),但我无权访问此 xml 的一般格式。此外,我可能更喜欢具有“级别”、“日期”等专用字段的自定义日志记录表,因此我不必在每个日志查询中解析它。