Question

I use this web.config:

 <traceAreas>
        <add provider="ASP" verbosity="Verbose" />
        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
        <add provider="ISAPI Extension" verbosity="Verbose" />
<add provider="WWW Server" areas="Security" verbosity="Verbose" />
      </traceAreas>
      <failureDefinitions statusCodes="200-999" />

And in webrole.cs

public override bool OnStart()
    {
        //Get Default Config
        DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();
//IIS Logs
        config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
        Trace.WriteLine("WAD Monitor started", "Information");


  DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);                   

RoleEnvironment.Changing += RoleEnvironmentChanging;
        return base.OnStart();
}

I can get wad-iis-logsfiles blob, but I can't get wad-iis-failedreqlogfiles blob on my emulator Why since 200-999 include all request! And should have a log files.

Était-ce utile?

La solution 2

Finally I found the answer! This is because IIS applicationHost auto disable the trace log file. When I add this code to webrole.cs and input a invalid url it works!

using (ServerManager serverManager = new ServerManager())
        {
            Configuration iisConfig = serverManager.GetApplicationHostConfiguration();

            ConfigurationSection sitesSection = iisConfig.GetSection("system.applicationHost/sites");

            ConfigurationElement siteDefaultsElement = sitesSection.GetChildElement("siteDefaults");

            ConfigurationElement logFileElement = siteDefaultsElement.GetChildElement("logFile");
            logFileElement["enabled"] = true;

            serverManager.CommitChanges();
        }

Autres conseils

Well, what I did is to set up my settings in the WebRole file and the code that I added to my web.config are this configurations

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

   <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
        <tracing>
            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="ASP" verbosity="Verbose" />
                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
                        <add provider="ISAPI Extension" verbosity="Verbose" />
                        <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions verbosity="Warning" statusCodes="400-599" />
                </add>
            </traceFailedRequests>
        </tracing>
    </system.webServer>

And then I implement the method Onstart with this configurations.

   public override bool OnStart()
            {
                String wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";

                CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));

                RoleInstanceDiagnosticManager roleInstanceDiagnosticManager = cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
                        RoleEnvironment.DeploymentId,
                        RoleEnvironment.CurrentRoleInstance.Role.Name,
                        RoleEnvironment.CurrentRoleInstance.Id);

                DiagnosticMonitorConfiguration config = roleInstanceDiagnosticManager.GetCurrentConfiguration();

                //Add Events
                config.WindowsEventLog.DataSources.Add("System!*");
                config.WindowsEventLog.DataSources.Add("Application!*");
                config.WindowsEventLog.ScheduledTransferLogLevelFilter = LogLevel.Error;
                config.WindowsEventLog.ScheduledTransferPeriod =TimeSpan.FromSeconds(15.0);
                config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
                config.Logs.ScheduledTransferPeriod = TimeSpan.FromSeconds(15.0);

                //transfer the IIS and IIS Failed Request Logs
                config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1.0);

                roleInstanceDiagnosticManager.SetCurrentConfiguration(config);

                return base.OnStart();
             }

And also I recommend you to check your ConnectionString on your WerRole settings, it should look something like this:

"DefaultEndpointsProtocol=http;AccountName=myAccount;AccountKey=8zTMPlQ8N76cEUNGLYhIvPf8lDmmTnCm7BICX/xtPmdr9vN7elOvZS5N2njtg+tbStoCoe30doN0sCrE1LHcsd=="

or

"UseDevelopmentStorage=true"

If you want to work on your development enviroment

Also you can take a look to this site for more details

http://robindotnet.wordpress.com/2011/02/16/azure-toolssdk-1-3-and-iis-logging/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top