從 NuGet 安裝 Serilog
核心的包是 Serilog 和 Serilog.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" };
}
}
隨後啓動項目即可看到控制檯和項目文件中出現配置所對應的控制檯日誌和日誌文件。