zoukankan      html  css  js  c++  java
  • 在.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:效果

    如有疑问或者错误的地方,请跟帖,本人会第一时间答复以及相互学习,谢谢!个人会不断的上传自己的学习心得!

    好了今天就先到这里,下次有时间再更新,如果存在不合理的地方,欢迎大家多多指教留言!!!

    我的博客园地址:https://www.cnblogs.com/Fengge518

  • 相关阅读:
    NVMe固态硬盘工具箱使用说明
    (原创)Python文件与文件系统系列(1)—— file 对象
    Linux系统排查4——网络篇
    Python内置类型——list
    (原)数据结构——线索二叉树
    Python匿名函数——lambda表达式
    Python生成器
    Python内置类型——dict
    Python内置类型——set
    解决Django-1.8.2应用部署到Apache后无法显示admin应用的CSS
  • 原文地址:https://www.cnblogs.com/Fengge518/p/15728706.html
Copyright © 2011-2022 走看看