本篇文章为大家展示了Serilog如何在ASP.Net Core中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
安装 Serilog
使用 Visual Studio 新建 ASP.Net Core 项目,接下来从 NuGet 上拉几个包,具体如下:
Serilog
这个包提供了对基本的结构化日志的功能支持。
Serilog.AspNetCore
这个包提供了 Serilog 对 AspNetCore 的支持。
Serilog.Settings.Configuration
这个包打通了 Serilog 和 Configuration ,这样你就可以直接从 appsettings.json 中读取配置。
Serilog.Sinks.Console
Console接收器顾名思义就是将 Serilog 的日志输出到 Console。
Serilog.Sinks.RollingFile
实现了对 滚动文件 的支持。
Serilog 利用 sink 特性将日志送到不同的地方,比如:text文件,数据库,甚至是 ElasticSearch 中,换句话说,sink 特性可以把日志送到它该去的地方,当所有的 nuget 包都安装好了之后,下面的代码片段展示了如何将日志送到 console 中。
public HomeController(ILogger<HomeController> logger) { using (var logConfig = new LoggerConfiguration().WriteTo.Console().CreateLogger()) { logConfig.Information("This is a test data."); }; _logger = logger; }
值得注意的是,Serilog 支持多个日志级别,如:verbose, debug, information, warning, error 和 fatal。
有时候为了调试目的,将日志送到 Console 是一个好办法,但将程序部署到生产之后,更通用的做法就是将日志记录到文件中,这样方便在生产上实时查看并做一定程度的日志分析,刚好这里的 Serilog.Sink.RollingFile 支持对滚动文件的支持,下面的代码片段展示了如何通过编程的方式将日志送到文件中。
public HomeController() { var logger = new LoggerConfiguration().MinimumLevel.Debug().WriteTo .RollingFile(@"e:\log.txt", retainedFileCountLimit: 7) .CreateLogger(); for (int i = 0; i < byte.MaxValue; i++) { logger.Information($"log {i}"); } }
在 ASP.NET Core 中内置了 Logger 组件,这一节中我们一起看看如何使用 Serilog 将其进行替换,在 Program.Main 方法中使用如下代码:
public class Program { public static void Main(string[] args) { Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) .Enrich.FromLogContext() .WriteTo.Console() .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) .UseSerilog() .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
从上面的代码中可以看到,我在 CreateHostBuilder 中使用了 UseSerilog() 扩展方法来启动 Serilog,这样就做好了 Serilog 的替换工作,接下来可以在 Controller 中通过依赖注入的方式获取 logger 实例,如下代码所示:
public IActionResult Index() { logger.LogInformation("hello world"); return View(); }
上述内容就是Serilog如何在ASP.Net Core中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。