.netcore入門21:aspnetcore集成Serilog

環境:window10

  • .netcore 3.1
  • vs2019.16.5.1
  • Serilog.AspNetCore 3.2.0

一、安裝Serilog

在nuget中直接搜索Serilog.AspNetCore安裝即可,安裝後會默認安裝一個核心組件:Serilog,以及一個配置組件:Serilog.Settings.Configuration,和兩個輸出組件:Serilog.Sinks.Console、Serilog.Sinks.File
在這裏插入圖片描述

二、在Program.cs文件中配置Serilog

在這裏,我將aspnetcore框架原有的日誌組件刪除掉,然後再加入Serilog,直接看代碼:

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureLogging(loggingBuilder =>
            {
                //這裏是清空所有日誌提供程序,包括aspnetcore框架自帶的控制檯、調試窗口等
                loggingBuilder.ClearProviders();
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
            //添加Serilog
            .UseSerilog((hostingContext, loggerConfiguration) =>
                //從appsettings.json中讀取配置
                loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration)
                .Enrich.FromLogContext()
            );
}

三、在appsettings.json中進行日誌配置

下面給Serilog配置日誌輸出程序:控制檯輸出、文件日誌(按照日期輸出)

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "Serilog": {
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "path": "log.txt",
          "rollingInterval": "Day"
        }
      },
      {
        "Name": "Console",
        "Args": {}
      }
    ]
  },
  "AllowedHosts": "*"
}

四、編寫測試日誌代碼

改造控制器:WeatherForecastController,修改Get方法如下:

 [HttpGet]
 public IEnumerable<WeatherForecast> Get()
 {
     _logger.LogTrace("LogTrace");
     _logger.LogDebug("LogDebug");
     _logger.LogInformation("LogInformation");
     _logger.LogWarning("LogWarning");
     _logger.LogError("LogError");
     _logger.LogCritical("LogCritical");
     var rng = new Random();
     return Enumerable.Range(1, 5).Select(index => new WeatherForecast
     {
         Date = DateTime.Now.AddDays(index),
         TemperatureC = rng.Next(-20, 55),
         Summary = Summaries[rng.Next(Summaries.Length)]
     })
     .ToArray();
 }

五、運行測試

直接調試運行:
控制檯輸出:
在這裏插入圖片描述
文件輸出:
在這裏插入圖片描述
瀏覽器中輸入:https://localhost:5001/WeatherForecast
控制檯輸出:
在這裏插入圖片描述
文件輸出:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章