上文说到Nlog日志框架,感觉它功能已经很强大,今天给大家介绍一个很不错的日志框架Serilog,根据我的了解,感觉它最大的优势是,结构化日志,它输出的日志是Json的格式,如果你使用的是Mongodb进行存储日志,那就是完美的结合,MongoDB也是文档式数据库,存储的格式很像JSON,也可以它是一个JSON文件,查询数据库快。不扯远了,还是讲讲Serilog的使用吧!
一、什么是Serilog?
Serilog 是 ASP.NET Core 的一个插件,可以简化日志记录。Serilog 有各种可用的接收器,例如,有纯文本、SQL 和 ElasticSearch 接收器等等。
二、如何安装Serilog?
Install-Package Serilog.AspNetCore
三、如何配置Serilog?
3.1Program的配置如下
- Configuration:构建对象,读取appsettings.json的配置文件
- Log.Logger:读取Configuration中的日志配置信息,然后设置输出的级别、内容、位置等。
- UseSerilog(dispose:true):引入Serilog框架,dispose:true=>系统退出时,释放日志对象
public class Program
{
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())//设置基础路径
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)//添加配置文件
.AddEnvironmentVariables()//添加环境变量
.Build();
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(Configuration)
.MinimumLevel.Debug()
.Enrich.FromLogContext()//使用Serilog.Context.LogContext中的属性丰富日志事件。
.WriteTo.Console(new RenderedCompactJsonFormatter())//输出到控制台
.WriteTo.File(formatter:new CompactJsonFormatter(),"logs\\test.txt",rollingInterval:RollingInterval.Day)//输出到文件
.CreateLogger();//清除内置日志框架
try
{
Log.Information("Starting web host");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex,"Host terminated unexpectedly");
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args).
.ConfigureWebHostDefaults(webBuilder =>{
webBuilder.UseStartup<Startup>();
}).UseSerilog(dispose:true);//引入第三方日志框架
3.2 appsettings.json配置
{
"Logging