2

Windows azure SDK 2.0 で導入された新機能を確認するだけです - 診断を有効にします。

MVC 4 Web ロールを使用して新しい Azure クラウド プロジェクトを作成し、構成セクションから診断を有効にしましたが、Azure テーブル (WADLogsTable、WADDiagnosticInfrastructureLogsTable) にログが保存されません。

診断.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="Verbose">
    <DataSource name="Application!*" />
  </WindowsEventLog>
</DiagnosticMonitorConfiguration>

ServiceDefinition.csdef

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="AzureWebApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2013-03.2.0">
  <WebRole name="MvcWebApp" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
</ServiceDefinition>

ServiceConfiguration.Cloud.cscfg

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="AzureWebApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="3" osVersion="*" schemaVersion="2013-03.2.0">
  <Role name="MvcWebApp">
    <Instances count="1" />
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

WebRole.cs -- MVC アプリケーションから

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Diagnostics;
using Microsoft.WindowsAzure.ServiceRuntime;

namespace MvcWebApp
{
    public class WebRole : RoleEntryPoint
    {
        public override void Run()
        {
            // This is a sample webrole implementation. Replace with your logic.

            while (true)
            {
                Thread.Sleep(10000);
                Trace.WriteLine("Working", "Information");
            }
        }

        public override bool OnStart()
        {
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            Trace.WriteLine("Starting Web Role ...", "Information");

            return base.OnStart();
        }
    }
}

Trace.WriteLine エラー、つまり「Starting Web Role ...」と「Working」が、Azure テーブルに保存されている WADLogsTable に表示されることを期待していました。

どんな助けでも大歓迎です。

ありがとう

バベシュ

4

2 に答える 2

1

オブジェクトからトレース行を書き込もうとしていRoleEntryPointます。

WebRoleインスタンスはアプリケーションのプロセスとは異なるプロセスで実行されているため、web.config の構成はインスタンスに影響を与えていません。

詳細については、この投稿を参照してください。

診断リスナーを手動で設定できます。

public class WebRole : RoleEntryPoint
{
    public override void Run()
    {
        var listener = new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener();
        Trace.Listeners.Add(listener);
    }
}

または、別の構成ファイルを追加するだけですWaIISHost.exe.config(出力ディレクトリにコピー プロパティを設定することを忘れないでください)。

この回答では、他のクラスでトレース印刷を使用すると、トレース印刷が正常に機能することを前提としています。

于 2013-06-14T12:33:18.487 に答える