如何在ASP.Net Core中使用Serilog
记录日志的一个作用就是方便对应用程序进行跟踪和排错调查,在实际应用上都是引入 日志框架,但如果你的 日志文件 包含非结构化的数据,那么查询起来将是一个噩梦,所以需要在记录日志的时候采用结构化方式。
将日志结构化可以更容易的查询和分析,做法就是在写入的时候定义好数据的格式,这种格式包括:xml,json,或者你希望转成的任何结构。
serilog 是一个第三方,开源的结构化日志框架,它的高层封装可以让开发者更容易的将日志记录到 console,file 和你能想到的各种 存储系统,这篇文章我们将会讨论如何在 asp.net core 中使用 serilog。
安装 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
serilog 利用 sink 特性将日志送到不同的地方,比如:text文件,数据库,甚至是 elasticsearch 中,换句话说,sink 特性可以把日志送到它该去的地方,当所有的 nuget 包都安装好了之后,下面的代码片段展示了如何将日志送到 console 中。
值得注意的是,serilog 支持多个日志级别,如:verbose, debug, information, warning, error 和 fatal。
有时候为了调试目的,将日志送到 console 是一个好办法,但将程序部署到生产之后,更通用的做法就是将日志记录到文件中,这样方便在生产上实时查看并做一定程度的日志分析,刚好这里的 serilog.sink.rollingfile 支持对滚动文件的支持,下面的代码片段展示了如何通过编程的方式将日志送到文件中。
使用 serilog 替换原生的 logger
在 asp.net core 中内置了 logger 组件,这一节中我们一起看看如何使用 serilog 将其进行替换,在 program.main 方法中使用如下代码:
从上面的代码中可以看到,我在 createhostbuilder 中使用了 useserilog() 扩展方法来启动 serilog,这样就做好了 serilog 的替换工作,接下来可以在 controller 中通过依赖注入的方式获取 logger 实例,如下代码所示:
日志是一个应用程序不可或缺的一部分,所以选择一款 灵活 + 简单 的日志框架就显得特别重要了,serilog 提供了低配置和易使用的特性让我们方便的将日志送到各个地方。
以上就是如何在asp.net core中使用serilog的详细内容,更多关于asp.net core 中使用 serilog的资料请关注其它相关文章!
推荐阅读
-
如何在ASP.NET Core 中快速构建PDF文档
-
如何在Asp.Net Core MVC中处理null值的实现
-
.net core中serilog的基本使用
-
如何在 ASP.Net Core 中使用 MiniProfiler
-
在ASP.NET Core中创建内部使用Scoped服务的Quartz.NET宿主服务
-
使用HTTP-REPL工具测试ASP.NET Core 2.2中的WEB API项目
-
如何在asp.net mvc3中使用HttpStatusCode
-
详解如何在ASP.NET Core中使用IHttpClientFactory
-
如何在ASP.Net Core中使用 IHostedService的方法
-
如何在ASP.Net Core使用分布式缓存的实现