在 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();

或者

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

    public static IWebHostBuilder CreateWebHostBuilder (string[] args) {
        return WebHost.CreateDefaultBuilder (args)
            .UseStartup<Startup> ()
            .UseSerilog ((context, configuration) => {
                configuration
                    .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();
            });
    }

在項目中使用 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" };
        }
    }

隨后啟動項目即可看到控制台和項目文件中出現配置所對應的控制台日志和日志文件。


參考文檔 :


免責聲明!

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



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