Azure角色(WCF服务)不记录跟踪信息

时间:2014-06-27 14:03:52

标签: azure azure-web-roles azure-diagnostics

我以工作者角色托管了一堆WCF服务,我正在部署到Azure。问题是标准跟踪日志记录没有显示在Azure存储表中。

在代码中 - 我使用

Trace.TraceInformation("Something")

在.csdef中,我有默认

<Imports>
    <Import moduleName="Diagnostics" />
</Imports>

在.csfg中我有

   <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="CONNECTION_STRING_THAT_WORKS_FOR_OTHER_ROLE" />
  </ConfigurationSettings>

在wadcfg中,我有

  <Logs bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" />

此设置适用于我正在部署的辅助角色,它可以很好地记录在WADLogsTable中。但这个不是。有什么指针吗?

2 个答案:

答案 0 :(得分:0)

您是如何设置DiagnosticMonitorTraceListener的,以及您在哪个进程中进行Trace.TraceInformation调用?我通常在app.config中看到DiagnosticMonitorTraceListener中的这个,但Trace.TraceInformation调用正在其他一些进程中发生。您必须在.config文件中(或通过TraceListeners.Add代码中)设置DiagnosticMonitorTraceListener,以用于进行Trace.TraceInformation调用的进程。如果这不能解决问题,那么我通常会采取三种方法来解决此问题:

  1. 您的代码编写Trace语句是否有问题? RDP到Azure VM并设置一个简单的TextWriterTraceListener来写入文件 - http://msdn.microsoft.com/en-us/library/sk36c28t(v=vs.110).aspx
  2. Windows Azure诊断代理未捕获跟踪是否存在问题(即我上面描述的有关未注册DiagnosticMonitorTraceListener的问题)?使用http://blogs.msdn.com/b/kwill/archive/2013/08/26/azuretools-the-diagnostic-utility-used-by-the-windows-azure-developer-support-team.aspx中AzureTools中的table2csv工具查看WADLogs TSF文件。
  3. 是否收集了跟踪的问题,但是没有上传到存储?使用相同的table2csv工具,但查看MAEvent表。这些表记录了诊断数据到存储的传输。

答案 1 :(得分:0)

我们稍后通过修改Azure项目而不是基础webrole来解决这个问题:

1 - 将文件webrole.cs添加到项目中,其中包含以下内容:

public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {    
        return base.OnStart();
    }
}

2 - 这是同一个项目的app.config:

<system.diagnostics>
    <trace>
      <listeners>
        <add name="AzureDiagnostics" type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
          <filter type="" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>

为我们解决了这个问题