环境: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
控制台输出:
文件输出: