使用2.0 Azure SDK for Cloud Services不记录RoleEntryPoint跟踪调用

时间:2013-05-02 09:51:29

标签: azure diagnostics

Scottgu刚刚宣布了2.0 SDK: http://weblogs.asp.net/scottgu/archive/2013/04/30/announcing-the-release-of-windows-azure-sdk-2-0-for-net.aspx

我尝试创建一个新的MVC4站点。将其添加到云项目中,并按预期包含以下诊断设置。

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

根据: https://www.windowsazure.com/en-us/develop/net/common-tasks/diagnostics/ Windows Azure日志默认启用

  

记录从代码发送到跟踪侦听器的跟踪消息(跟踪   必须将侦听器添加到web.config或app.config文件中)。记录数据   将在thescheduledTransferPeriodtransfer间隔转移到   存储表WADLogsTable。

diagnostic.wadcfg:

<?xml version="1.0" encoding="utf-8"?>
<DiagnosticMonitorConfiguration configurationChangePollInterval="PT1M" overallQuotaInMB="4096" xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
  <DiagnosticInfrastructureLogs />
  <Directories>
    <IISLogs container="wad-iis-logfiles" />
    <CrashDumps container="wad-crash-dumps" />
  </Directories>
  <Logs bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" />
  <WindowsEventLog bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Error">
    <DataSource name="Application!*" />
  </WindowsEventLog>
</DiagnosticMonitorConfiguration>

我在我的global.cs和webrole.cs启动方法中放置了一个Trace.TraceError,我只从global.cs获取了一个。

我错过了什么或者它是否也适用于WebRole?

1 个答案:

答案 0 :(得分:7)

WebRole.cs的运行方式与您的应用程序本身不同,web.config不会影响它。

尝试在代码中手动设置Trace Listeners

Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener());

或使用here的解决方案:

  

从RoleEntryPoint和您的网站读取配置文件:   即使在Windows Azure中存储配置的首选方法   应用程序位于ServiceConfiguration.cscfg文件中   在许多情况下,您可能想要使用正常的.NET配置文件 -   特别是在配置.NET系统组件或可重用时   构架。特别是每当您使用Windows Azure诊断时   您需要在.NET中配置DiagnosticMonitorTraceListener   配置文件。

     

创建Web角色项目时,Visual Studio会创建一个   .NET配置的web.config文件。在你的网站上   应用程序可以访问此信息,即您的RoleEntryPoint代码   不能 - 因为它不是作为您网站的一部分运行。如   前面提到过,它运行在一个名为WaIISHost.exe的进程下,所以它   期望其配置位于名为WaIISHost.exe.config的文件中。   因此,如果您在Web项目中创建具有此名称的文件   并将“复制到输出目录”属性设置为“始终复制”   你会发现RoleEntryPoint可以愉快地阅读它。这是一   在我能想到你将拥有两个.NET的唯一情况   同一个项目中的配置文件!