gpt4 book ai didi

如何在ASP.Net Core中使用Serilog

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章如何在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 中.

?
1
2
3
4
5
6
7
8
9
         public  HomeController(ILogger<HomeController> logger)
         {
             using  (var logConfig =  new  LoggerConfiguration().WriteTo.Console().CreateLogger())
             {
                 logConfig.Information( "This is a test data." );
             };
 
             _logger = logger;
         }

如何在ASP.Net Core中使用Serilog

值得注意的是,Serilog 支持多个日志级别,如:verbose, debug, information, warning, error 和 fatal.

有时候为了调试目的,将日志送到 Console 是一个好办法,但将程序部署到生产之后,更通用的做法就是将日志记录到文件中,这样方便在生产上实时查看并做一定程度的日志分析,刚好这里的 Serilog.Sink.RollingFile 支持对滚动文件的支持,下面的代码片段展示了如何通过编程的方式将日志送到文件中.

?
1
2
3
4
5
6
7
8
9
10
11
         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中使用Serilog

使用 Serilog 替换原生的 Logger

在 ASP.NET Core 中内置了 Logger 组件,这一节中我们一起看看如何使用 Serilog 将其进行替换,在 Program.Main 方法中使用如下代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
     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 实例,如下代码所示:

?
1
2
3
4
5
6
         public  IActionResult Index()
         {
             logger.LogInformation( "hello world" );
 
             return  View();
         }

如何在ASP.Net Core中使用Serilog

日志是一个应用程序不可或缺的一部分,所以选择一款 灵活 + 简单 的日志框架就显得特别重要了,Serilog 提供了低配置和易使用的特性让我们方便的将日志送到各个地方.

以上就是如何在ASP.Net Core中使用Serilog的详细内容,更多关于ASP.Net Core 中使用 Serilog的资料请关注我其它相关文章! 。

原文链接:https://mp.weixin.qq.com/s/sMuUVsG6iWWSpxweK9_Duw 。

最后此篇关于如何在ASP.Net Core中使用Serilog的文章就讲到这里了,如果你想了解更多关于如何在ASP.Net Core中使用Serilog的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com