.net新兴日志框架Serilog简介

2022-07-15,,,,

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 file    
  • mongodb    输出到mongodb
  • litedb        输出到文件数据库litedb
  • sqlite         输出到文件数据库sqlite
  • signalr        输出为signalr服务
  • http        输出到rest服务

输出格式配置

serilog的日志输出通过loggerconfiguration类配置,详细的配置参数可以参看官方文档:configuration basics。在日常使用中,感觉更多的是直接通过loggerconfiguration在代码中配置。

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

《.net新兴日志框架Serilog简介.doc》

下载本文的Word格式文档,以方便收藏与打印。