美文网首页
.NetCore使用Serilog结构化记录日志

.NetCore使用Serilog结构化记录日志

作者: AlexWillBeGood | 来源:发表于2020-10-25 10:43 被阅读0次

    结构化的日志,便于检索以及分析统计。
    创建一个默认的AspNetCore WebApi程序,添加以下扩展包:

    Serilog.AspNetCore

    在Program.cs文件中进行配置

    public class Program
        {
            public static IConfiguration configuration { get; } = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables()
                .Build();
    
            public static int Main(string[] args)
            {
                Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(configuration)
                    .MinimumLevel.Debug()
                    .Enrich.FromLogContext()
                    //输出到Console
                    .WriteTo.Console(new RenderedCompactJsonFormatter())
                    //输出到文件
                    .WriteTo.File(formatter: new CompactJsonFormatter(), "logs\\myapp.text", rollingInterval: RollingInterval.Day)
                    .CreateLogger();
    
                try
                {
                    Log.Information("Starting web host");
                    CreateHostBuilder(args).Build().Run();
                    return 0;
                }
                catch (Exception ex)
                {
                    Log.Fatal(ex, "Host Terminated Unexpectedly");
                    return 1;
                }
                finally
                {
                    Log.CloseAndFlush();
                }
            }
    
            public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    })
                //退出时释放日志对象
                .UseSerilog(dispose: true);
        }
    

    别忘记修改这里的配置


    image.png

    其中appsettings.json中的配置

    "Serilog": {
        "MinimumLevel": {
          "Default": "Information",
          "Override": {
            "Microsoft": "Error",
            "System": "Information"
          }
        }
      }
    

    详细配置直接参考官网:https://github.com/serilog/serilog/wiki/Configuration-Basics

    顺便附带上不使用配置文件的方式(偷个懒,抄一抄IDS Demo的配置)

    Log.Logger = new LoggerConfiguration()
                    .MinimumLevel.Debug()
                    .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
                    .MinimumLevel.Override("Microsoft.Hosting.Lifetime", LogEventLevel.Information)
                    .MinimumLevel.Override("System", LogEventLevel.Warning)
                    .MinimumLevel.Override("Microsoft.AspNetCore.Authentication", LogEventLevel.Information)
                    .WriteTo.File(
                        @"D:\home\LogFiles\Application\identityserver.txt",
                        fileSizeLimitBytes: 1_000_000,
                        rollOnFileSizeLimit: true,
                        shared: true,
                        flushToDiskInterval: TimeSpan.FromSeconds(1))
                    .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Code)
                    .CreateLogger();
    
                try
                {
                    Log.Information("Starting host...");
                    CreateHostBuilder(args).Build().Run();
                    return 0;
                }
                catch (Exception ex)
                {
                    Log.Fatal(ex, "Host terminated unexpectedly.");
                    return 1;
                }
                finally
                {
                    Log.CloseAndFlush();
                }
    

    相关文章

      网友评论

          本文标题:.NetCore使用Serilog结构化记录日志

          本文链接:https://www.haomeiwen.com/subject/xgigmktx.html