using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Xml.Linq;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using PostSharp.Patterns.Diagnostics;
using PostSharp.Patterns.Diagnostics.Adapters.AspNetCore;
using PostSharp.Patterns.Diagnostics.Backends.Console;
 
[assembly: Log]
 
namespace PostSharp.Samples.Logging.PerRequest
{
  public class Program
  {
    public static void Main(string[] args)
    {
      
      AspNetCoreLogging.Initialize();
      LoggingServices.DefaultBackend = new ConsoleLoggingBackend();
 
      // This loads the configuration file from disk. 
      // You can also store this file in a cloud storage service and use ConfigureFromXmlWithAutoReloadAsync
      // to load it and have it automatically reload every minute or so, so you can dynamically
      // change the verbosity.
     LoggingServices.DefaultBackend.ConfigureFromXml(XDocument.Load("postsharp-logging.config"));
 
      CreateHostBuilder(args).Build().Run();
    }
 
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
              webBuilder.UseStartup<Startup>();
            });
  }
}