.net新兴日志框架Serilog简介

2022-07-01 14:56:36

Serilog是.net下的新兴的日志框架,本文这里简单的介绍一下它的用法。

首先安装Nuget包:

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

其中包Serilog是Log核心库,Serilog.Sinks.Console是Log的控制台输出库,这个也是日志框架的一贯策略,一个核心库加多个输出库组合使用,这样可以保持良好的扩展性。

简单的示例:

using (var log = new LoggerConfiguration()
                .WriteTo.Console()
                .CreateLogger())
{
    log.Information("Hello, Serilog!");
    log.Warning("Goodbye, Serilog.");
}

输出结果如下:

LoggerConfiguration

这里用了一个LoggerConfiguration对象,它主要用于创建和设置Log对象,类似于Nlog里面的LogManager类。这里主要用它两个方法:

    WriteTo:WriteTo属性用来设置日志的输出,Serilog将其称为Sink(水槽),还是比较形象的。CreateLogger:用于创建一个ILogger类型的Logger对象.

    ILogger

    ILogger对象用于记录日志,和其他日志框架差不多。Serilog日志级别分为如下5级

      Verbose,Debug,Information,Warning,Error,Fatal,

      大多数的日志也是这样5级,只是有的名称叫的不同(NLog第1级叫Trace,其它的一致),每一级别对应一个写Log的函数:

      log.Verbose("verbose");
      log.Information("info");
      log.Debug("debug");
      log.Warning("warning");
      log.Error("err");
      log.Fatal("fatal");

      另外,ILogger对象还有一个Dispose方法,用于关闭日志对象。

      全局Logger对象

      在实际的使用过程中,往往并不是每次使用都去创建一个ILogger,一种方式是通过依赖注入的方式创建一个全局的Logger。不过这种方式需要引入DI框架。在小程序中使用不算方便。

      另一种方式是直接使用静态的Log类,它也携带了写入日志的方法,用起来非常方便。

      Log.Warning("warning");
      Log.Error("err");
      Log.Fatal("fatal");

      不过Log类之前,首先必须给它关联一个ILogger。

      Log.Logger = new LoggerConfiguration()
                  .WriteTo.Console()
                  .CreateLogger();

      接收器

      Serilog的输出对象称之为Sink(水槽),github上提供了大量的第三方的可用sinks,这里简单的列举几个常用的:

        Console        输出到控制台Debug        输出到VS的Debug窗口File            输出到文件Rolling>MongoDB    输出到MongoDBLiteDB        输出到文件数据库LiteDBSQLite         输出到文件数据库SQLiteSignalR        输出为SignalR服务HTTP        输出到REST服务

        输出格式配置

        Serilog的日志输出通过LoggerConfiguration类配置,详细的配置参数可以参看官方文档:Configuration>

        到此这篇关于.net日志框架Serilog的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易采站长站。