在 ASP.NET Core 中使用 Serilog 進行日誌記錄

從 NuGet 安裝 Serilog

核心的包是 SerilogSerilog.AspNetCore
常用的還有 Serilog.Sinks.Console 控制檯日誌打印 和 Serilog.Sinks.File 文件日誌打印。

PM> Install-Package Serilog
PM> Install-Package Serilog.AspNetCore
PM> Install-Package Serilog.Sinks.Console
PM> Install-Package Serilog.Sinks.File

在 Main函數 中配置 Serilog

在 Main 函數的代碼大概如下,應該是夠用了,如需其他配置請參考 Serilog官方文檔

    public static void Main(string[] args)
    {
    	// 配置 Serilog 
        Log.Logger = new LoggerConfiguration()
            // 最小的日誌輸出級別
            .MinimumLevel.Information()
            // 日誌調用類命名空間如果以 Microsoft 開頭,覆蓋日誌輸出最小級別爲 Information
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .Enrich.FromLogContext()
            // 配置日誌輸出到控制檯
            .WriteTo.Console()
            // 配置日誌輸出到文件,文件輸出到當前項目的 logs 目錄下
            // 日記的生成周期爲每天
            .WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day)
            // 創建 logger
            .CreateLogger();
		
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        // 將 Serilog 設置爲日誌記錄提供程序
        .UseSerilog();

在項目中使用 Serilog 進行日誌輸出

使用 Serilog 時,直接使用 ILogger 即可,因爲此服務項目應該是默認注入了,此處需要依賴關係注入知識。
如你不瞭解依賴關係注入,請看 微軟官方文檔

    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly ILogger<ValuesController> _logger;

        public ValuesController(ILogger<ValuesController> logger)
        {
            _logger = logger;
        }

        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            _logger.LogInformation("Serilog test info.");
            _logger.LogError("Serilog test error.");
            return new string[] { "value1", "value2" };
        }
    }

隨後啓動項目即可看到控制檯和項目文件中出現配置所對應的控制檯日誌和日誌文件。


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