1.20 结构化日志组件 Serilog:记录对查询分析友好的日志.pdf

    使用 Serilog 替代默认日志记录器:

    1. public class Program
    2. {
    3. public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
    4. .SetBasePath(Directory.GetCurrentDirectory())
    5. .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    6. .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
    7. .AddEnvironmentVariables()
    8. .Build();
    9. public static int Main(string[] args)
    10. {
    11. Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(Configuration)
    12. .MinimumLevel.Debug()
    13. .Enrich.FromLogContext()
    14. .WriteTo.Console(new RenderedCompactJsonFormatter())
    15. .WriteTo.File(formatter: new CompactJsonFormatter(), "logs\\myapp.txt", rollingInterval: RollingInterval.Day)
    16. .CreateLogger();
    17. try
    18. {
    19. Log.Information("Starting web host");
    20. CreateHostBuilder(args).Build().Run();
    21. return 0;
    22. }
    23. catch (Exception ex)
    24. {
    25. Log.Fatal(ex, "Host terminated unexpectedly");
    26. return 1;
    27. }
    28. finally
    29. {
    30. Log.CloseAndFlush();
    31. }
    32. }
    33. public static IHostBuilder CreateHostBuilder(string[] args) =>
    34. Host.CreateDefaultBuilder(args)
    35. .ConfigureWebHostDefaults(webBuilder =>
    36. {
    37. webBuilder.UseStartup<Startup>();
    38. })
    39. .UseSerilog(dispose: true);
    40. }