欢迎光临散文网 会员登陆 & 注册

使用 Serilog 框架记录日志

2023-08-22 21:57 作者:凌澜酱  | 我要投稿

#.NET Platform  

Serilog 是一个用于.NET应用程序的日志记录开源库,配置简单,接口干净,并可运行在最新的.NET平台上,与其他日志库不同, Serilog 是以功能强大的结构化事件数据为基础构建的, 支持将日志输出到控制台、文件、数据库和其它更多的方式,支持参数化日志模板,非常灵活。

使用 Serilog 框架记录日志

接下来零度带大家在控制台程序中实践一下 Serilog 框架的简单配置,首先,使用 NuGet 方式安装 Serilog 核心库,其次安装控制台输出扩展库,如果你想将日志输出到其它存储介质,可安装其它扩展库,Serilog支持的扩展库是很多的。


  Install-Package Serilog
  Install-Package Serilog.Sinks.Console

然后引用命名空间:

using Serilog;

使用 LoggerConfiguration 创建 ILogger 对象:

var log = new LoggerConfiguration()
   .WriteTo.Console()
   .CreateLogger();

一般情况下,我们在整个应用程序中使用同一个 ILogger 对象就可以了,所以在首次启动的时候初始化即可。接下来就可以写日志了。



log.Information("Hello, 零度!");`

如果您想在全局使用日志记录器,那么可以通过下面的方式将当前的日志记录器设置为全局对象,以后就可以当前程序的任何地方使用这个记录器了。

Log.Logger = log;
Log.Information("The global logger has been configured");


下面的示例将日志同时输出到控制台和文件中,而且日志最小记录级别设置为调试模式,首先安装程序库:

Install-Package Serilog
Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.File

在控制台中配置日志记录器,在 ASP.NET Core 中的配置类似:


   using System;
   using Serilog;

   namespace SerilogExample
   {
       class Program
       {
           static void Main()
           {
               Log.Logger = new LoggerConfiguration()
                   .MinimumLevel.Debug()
                   .WriteTo.Console()
                   .WriteTo.File("logs\\myapp.txt", rollingInterval: RollingInterval.Day)
                   .CreateLogger();

               Log.Information("Hello, world!");

               int a = 10, b = 0;
               try
               {
                   Log.Debug("Dividing {A} by {B}", a, b);
                   Console.WriteLine(a / b);
               }
               catch (Exception ex)
               {
                   Log.Error(ex, "Something went wrong");
               }

               Log.CloseAndFlush();
               Console.ReadKey();
           }
       }
   }

运行这个控制台应用程序,即可输出有颜色的控制台日志。这里只是一个最简单不过的配置, Serilog 框架的配置是非常灵活的,您想了解更详细的配置方法,可参阅官方文档进行学习。

关于 Serilog 框架非常不错的博客整理:

结构化日志类库-Serilog


使用 Serilog 框架记录日志的评论 (共 条)

分享到微博请遵守国家法律