Search code examples
azureazure-diagnostics

wad-iis-failedreqlogfiles can't be found in my blob


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.


Solution

  • 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();
            }