環境:window10
- .netcore 3.1
- vs2019.16.5.1
- Serilog.AspNetCore 3.2.0
一、安裝Serilog
在nuget中直接搜索Serilog.AspNetCore安裝即可,安裝後會默認安裝一個核心組件:Serilog,以及一個配置組件:Serilog.Settings.Configuration,和兩個輸出組件:Serilog.Sinks.Console、Serilog.Sinks.File
二、在Program.cs文件中配置Serilog
在這裏,我將aspnetcore框架原有的日誌組件刪除掉,然後再加入Serilog,直接看代碼:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(loggingBuilder =>
{
//這裏是清空所有日誌提供程序,包括aspnetcore框架自帶的控制檯、調試窗口等
loggingBuilder.ClearProviders();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
//添加Serilog
.UseSerilog((hostingContext, loggerConfiguration) =>
//從appsettings.json中讀取配置
loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext()
);
}
三、在appsettings.json中進行日誌配置
下面給Serilog配置日誌輸出程序:控制檯輸出、文件日誌(按照日期輸出)
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"Serilog": {
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "log.txt",
"rollingInterval": "Day"
}
},
{
"Name": "Console",
"Args": {}
}
]
},
"AllowedHosts": "*"
}
四、編寫測試日誌代碼
改造控制器:WeatherForecastController,修改Get方法如下:
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
_logger.LogTrace("LogTrace");
_logger.LogDebug("LogDebug");
_logger.LogInformation("LogInformation");
_logger.LogWarning("LogWarning");
_logger.LogError("LogError");
_logger.LogCritical("LogCritical");
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
五、運行測試
直接調試運行:
控制檯輸出:
文件輸出:
瀏覽器中輸入:https://localhost:5001/WeatherForecast
控制檯輸出:
文件輸出: