.net新兴日志框架Serilog简介

 更新时间:2022年07月01日 11:33:14   作者:天方  
这篇文章介绍了.net下的新兴日志框架Serilog,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • asp.net编程获取项目根目录实现方法集合

    asp.net编程获取项目根目录实现方法集合

    这篇文章主要介绍了asp.net编程获取项目根目录实现方法,结合实例形式分析总结了asp.net针对项目目录的操作技巧与注意事项,需要的朋友可以参考下
    2015-11-11
  • Visual Studio 2022常见的报错以及处理方案图文详解

    Visual Studio 2022常见的报错以及处理方案图文详解

    许多用户在使用Visual Studio的过程中常会遇到各种问题,下面这篇文章主要给大家介绍了关于Visual Studio 2022常见的报错以及处理方案的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • ASP.NET实现个人信息注册页面并跳转显示

    ASP.NET实现个人信息注册页面并跳转显示

    这篇文章主要介绍了ASP.NET实现个人信息注册页面并跳转显示的相关资料,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下
    2016-11-11
  • 防SQL注入 生成参数化的通用分页查询语句

    防SQL注入 生成参数化的通用分页查询语句

    前些时间看了玉开兄的“如此高效通用的分页存储过程是带有sql注入漏洞的”这篇文章,才突然想起某个项目也是使用了累似的通用分页存储过程。
    2010-07-07
  • CreateOutputCachedItemKey 缓存key的创建

    CreateOutputCachedItemKey 缓存key的创建

    有关OutputCache的相关资料大家可以查看 OutputCacheProvider OutputCache的一点点认识 ,我们还是复习一下OutputCache内容
    2012-11-11
  • ASP.net Textbox的技巧使用

    ASP.net Textbox的技巧使用

    大家在做Web开发的时候,可能也会遇到之前我所遇到的问题,在使用TextBox控件时,控件的边缘不能被背景图片完全覆盖掉
    2011-09-09
  • asp.net中Table生成Excel表格的方法

    asp.net中Table生成Excel表格的方法

    这篇文章主要介绍了asp.net中Table生成Excel表格的方法,可实现将html的table表格生成excel的功能,需要的朋友可以参考下
    2015-01-01
  • .NET中OpenFileDialog使用线程报错的解决方法

    .NET中OpenFileDialog使用线程报错的解决方法

    这篇文章主要为大家详细介绍了.NET中OpenFileDialog使用线程报错的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • NetCore 3.0文件上传和大文件上传的限制详解

    NetCore 3.0文件上传和大文件上传的限制详解

    这篇文章主要给大家介绍了关于NetCore 3.0文件上传和大文件上传限制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用NetCore 3.0具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • 使用Visual Studio编写单元测试

    使用Visual Studio编写单元测试

    本文详细讲解了使用Visual Studio编写单元测试的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03

最新评论