在.NetCore中简单使用Serilog日志

目前都比较流行使用 Serilog, 官网url: https://serilog.net/

1:Nuget包

============公司一***项目中新增如下Nuget依赖=====================

<PackageReference Include="Serilog.Extensions.Hosting" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="8.2.0" /> //写入到 Elasticsearch log
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />

2:Serilog 简单使用 

public static int Main(string[] args)
        {
            try
            {
                Log.Logger = new LoggerConfiguration()
                      .MinimumLevel.Debug()//最小等级
                      //  .MinimumLevel.Error()
                      .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                      .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
                      .Enrich.FromLogContext()//需要加上,来自日志的上下文
                      .WriteTo.Console()//写到控制台,调式时比较直观
                      .WriteTo.Async(c => c.File("Logs/logs.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 1024 * 1024 * 2, retainedFileCountLimit: 60))
                       
                      .CreateLogger();
                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)
             .ConfigureLogging((hostingContext, builder) =>
             {
                 //过滤掉系统默认的一些日志
                 builder.AddFilter("System", LogLevel.Information);
                 builder.AddFilter("Microsoft", LogLevel.Information);
                 builder.AddConsole();
             })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.ConfigureKestrel(c => { c.Limits.MaxRequestBodySize = 1024 * 1024 * 300; });
                    webBuilder.UseUrls("http://*:6666");
                    webBuilder.UseStartup<Startup>();
                })
               .UseSerilog();

 

3:简单说明  

//自动生成60个文件回滚,默认为31个文件
  WriteTo.Async(c => c.File("Logs/logs.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 1024 * 1024 * 2, retainedFileCountLimit: 60))

//==第一次启动时会自动创建
Logs/logs.txt
在控制器中也想使用日志怎么办?我们只需要在Controller构造函数中 直接使用Microsoft自带的 log来注入即可使用,非常方便

4:怎么知道是否配置或自启动ok?

5:Docker 挂载一下

 

6:效果

posted @ 2021-12-24 19:42  天天向上518  阅读(703)  评论(0编辑  收藏  举报