2

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 文件)。日志数据将在预定的TransferPeriod 传输间隔传输到存储表WADLogsTable。

诊断.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?

4

1 回答 1

7

WebRole.cs正在与您的应用程序本身不同的进程中运行,并且您web.config不会影响它。

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

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

或使用此处的解决方案:

从 RoleEntryPoint 和您的网站读取配置文件: 尽管在 Windows Azure 应用程序中存储配置的首选方式是在 ServiceConfiguration.cscfg 文件中,但在很多情况下您可能想要使用普通的 .NET 配置文件 - 尤其是当配置 .NET 系统组件或可重用框架。特别是当您使用 Windows Azure 诊断时,您需要在 .NET 配置文件中配置 DiagnosticMonitorTraceListener。

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

于 2013-05-02T10:07:49.677 回答