Azure API 应用程序诊断

Azure API Apps Diagnostics

我有一个 Azure API 应用程序需要记录跟踪数据,因此选择使用 Azure 诊断和 .Net System.Diagnostics.Trace。

跟踪消息记录到 Table 存储,但事件 ID 字段为 0。在线文档建议 0 是默认值,但我看不到设置事件 ID 的明显方法。

Trace.TraceError、Trace.TraceInformation 和 Trace.TraceWarning 只接受字符串或格式化消息。

有人知道是否可以设置事件 ID,如果可以的话如何设置?

谢谢 安迪

虽然我不能把答案归功于我,但我认为我应该 post 我在这里找到的答案:https://blogs.msdn.microsoft.com/mcsuksoldev/2014/09/04/adding-trace-to-azure-web-sites-and-web-jobs/

基本上您使用 System.Diagnostics.TraceSource 类型并调用 TraceEvent() 方法。尽管如果没有先进行一些配置,这将无法工作。

需要注意三个跟踪侦听器,尽管对于 TableStorage 它只是第一个:

  • AzureTableTraceListener
  • AzureBlobTraceListener
  • AzureDriveTraceListener

您需要安装 nuget 包:Microsoft.WindowsAzure.WebSites.Diagnostics

上面 link 中的代码示例是:

public static readonly TraceSource Operational = new TraceSource("Operational");
Operational.TraceEvent(TraceEventType.Verbose, 101, "TraceEvent WebSite Operational");

要使 TraceSource 登录到 TableStorage,您需要将以下内容添加到 web.config:

<system.diagnostics>
<sharedListeners>
  <add name="AzureTableTraceListener" type="Microsoft.WindowsAzure.WebSites.Diagnostics.AzureTableTraceListener, Microsoft.WindowsAzure.WebSites.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</sharedListeners>
<sources>
  <source name="Operational" switchName="OperationalSourceSwitch" switchType="System.Diagnostics.SourceSwitch">
    <listeners>
      <add name="AzureTableTraceListener"/>
      <add name="AzureBlobTraceListener"/>
    </listeners>
  </source>
</sources>
<switches>
  <add name="OperationalSourceSwitch" value="All" />
</switches>
<trace autoflush="true" indentsize="4" />

安迪