zoukankan      html  css  js  c++  java
  • Serilog一个优秀的.NET日志框架

    1 Serilog是什么?

    在.NET使用日志框架第一时间会想到NLog或是Log4Net,Serilog 是这几年快速崛起的Log框架之一,Serilog是以Structured logging 为基础进行设计,透过logging API 可以轻松的记录应用程式中对象属性,方便快速进行logging 内容进行查询与分析,并将其纪录内容透过json (可指定) 的方式输出。

    2 使用

    首先,将Serilog.AspNetCore NuGet软件包安装到您的应用程序中。

    Serilog.AspNetCore
    

    然后,在应用程序的Program.cs文件中,首先配置Serilog。

    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)
        .AddEnvironmentVariables()
        .Build();
    
    public static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .ReadFrom.Configuration(Configuration)
            .Enrich.FromLogContext()
            .CreateLogger();
    
        try
        {
            CreateHostBuilder(args).Build().Run();
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "主机意外终止");
        }
        finally
        {
            Log.CloseAndFlush();
        }
    }
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseSerilog() // <-添加此行
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
    

    接着,更改appsettings.json配置:删除"Logging"节点,增加"Serilog"节点

    "Serilog": {
        "MinimumLevel": {
          "Default": "Information"
        },
        "WriteTo": [
          { "Name": "Console" }
        ]
      },
    

    接着,控制器的构造函数中请求logger实例

    private readonly ILogger<LogController> logger; // <-添加此行
    public LogController(ILogger<LogController> logger)
    {
        this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
    }
    

    最后,在Get方法中使用Log

    [HttpGet]
    public void Get()
    {
        logger.LogInformation("测试1"); // <-添加此行
    }
    
  • 相关阅读:
    在energia中添加新的库
    KEIL3中出现的字符不对齐的情况解决办法
    VHDL硬件描述语言实现数字钟
    51单片机软件I2C驱动中的CY
    自问自答:在VB中如何实现像C++一样printf的功能
    [转][译] 分分钟学会一门语言之 Python 篇
    杂谈PID控制算法——最终篇:C语言实现51单片机中的PID算法
    Eclipse 安装与配置
    win10 环境安装 jdk 11.0.2
    解决网络问题神奇工具
  • 原文地址:https://www.cnblogs.com/zcqiand/p/14257598.html
Copyright © 2011-2022 走看看