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