当前位置: 首页 > 科技观察

如何在ASP.NetCore中使用Serilog

时间:2023-03-15 08:15:08 科技观察

本文转载请联系码农阅读公众号。日志记录的功能之一是促进应用程序的跟踪和故障排除。在实际应用中,引入了日志框架,但是如果你的日志文件中包含非结构化数据,查询起来会是一场噩梦,所以你需要在日志记录的时候使用结构化的方式。对日志进行结构化处理,可以方便查询和分析。方法是在写入时定义数据的格式。此格式包括:xml、json或您要转换成的任何结构。Serilog是一个第三方开源结构化日志框架。它的高级封装让开发者可以更方便的将日志记录到控制台、文件以及你能想到的各种存储系统中。在本文中,我们将讨论如何在ASP.NetCore中使用Serilog登录。安装Serilog使用VisualStudio新建一个ASP.NetCore项目,然后从NuGet中拉取几个包,如下:Serilog包提供对基本结构化日志的功能支持。Serilog.AspNetCore包为AspNetCore提供Serilog支持。Serilog.Settings.Configuration包将Serilog和Configuration连接起来,以便您可以直接从appsettings.json读取配置。Serilog.Sinks.ConsoleConsolesink,顾名思义,输出Serilog日志到Console。Serilog.Sinks.RollingFile实现了对滚动文件的支持。使用SerilogSinkSerilog使用sink特性将日志发送到不同的地方,例如:文本文件、数据库,甚至ElasticSearch。也就是说,sink特性可以将日志发送到它应该去的地方,当所有的nuget包安装完成后,下面的代码片段展示了如何将日志发送到控制台。publicHomeController(ILoggerlogger){using(varlogConfig=newLoggerConfiguration().WriteTo.Console().CreateLogger()){logConfig.Information("Thisatestdata.");};_logger=logger;}值得注意的是,Serilog支持多种日志级别,如:verbose、debug、information、warning、error和fatal。有时将日志发送到控制台进行调试是一种很好的方式,但是在程序部署到生产后,更常见的是将日志记录到文件中,这样便于实时查看,也有一定的可操作性。production上的日志分析,正好这里的Serilog.Sink.RollingFile支持滚动文件。以下代码片段显示了如何以编程方式将日志发送到文件。publicHomeController(){varlogger=newLoggerConfiguration().MinimumLevel.Debug().WriteTo.RollingFile(@"e:\log.txt",retainedFileCountLimit:7).CreateLogger();for(inti=0;iHost.CreateDefaultBuilder(args).UseSerilog().ConfigureWebHostDefaults(webBuilder=>{webBuilder.UseStartup