【问题标题】:How to customize Azure DiagnosticTraceMonitor output如何自定义 Azure DiagnosticTraceMonitor 输出
【发布时间】:2013-11-06 11:23:13
【问题描述】:

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

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

【问题讨论】:

    标签: azure azure-diagnostics


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答,请查看更新后的问题。您能否提供有关如何在 Azure 中实现自定义日志记录的更多信息(链接或 smth)?我想知道是否可以使用自定义模式登录自定义表。
    • 看看这篇博文:blogs.msdn.com/b/windowsazure/archive/2013/06/28/…。对于我们的应用程序,我们基本上定制了他们的解决方案。在我们的例子中,我们只通过诊断存储错误。对于其他所有内容(如应用程序跟踪等),我们使用 NLog 编写内容,然后将其传输到 blob 存储,然后从那里读取以推入表存储。
    【解决方案2】:
    猜你喜欢
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多