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"); // <-添加此行
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM