核心的包是 Serilog 和 Serilog.AspNetCore。
經常使用的還有 Serilog.Sinks.Console 控制檯日誌打印 和 Serilog.Sinks.File 文件日誌打印。html
PM> Install-Package Serilog PM> Install-Package Serilog.AspNetCore PM> Install-Package Serilog.Sinks.Console PM> Install-Package Serilog.Sinks.File
在 Main 函數的代碼大概以下,應該是夠用了,如需其餘配置請參考 Serilog官方文檔。api
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();
或者ide
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 時,直接使用 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" }; } }
隨後啓動項目便可看到控制檯和項目文件中出現配置所對應的控制檯日誌和日誌文件。ui