文章摘要:这篇文章介绍了ASP.NET Core的日志系统,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
ASP.NET Core的日志系统介绍
发布时间:2022-07-14 作者:小沈子 分类: .NET
.net core是内置了日志系统的,本文这里简单的介绍一下它的基本用法。如下是一个简单的示例:
主要步骤如下:
在DI服务中通过AddLogging的配置日志服务
通过DI服务获取ILoggerFactory
通过日志工厂创建ILogger
通过ILogger写日志
需要注意的是,日志是异步输出的,如果调用logger.LogInformation后程序马上结束,是不会有日志输出的。
ILogger和ILogger<T>
ILogger是我们实际用-来记录日志的对象,前面的例子已经演示了它的使用方法,在.net core日志系统中,还提供了另一个接口ILogger<T>,它的创建方式如下:
ILogger<T>本身也是继承自ILogger的,也就是说,他们的用法基本一样,ILogger<T>的主要区别是创建的时候无需制定数据源名称,它的数据源就是类名,也就是说,它和如下方式创建的ILogger功能基本上是一致的。
那么为什么要创建一个ILogger<T>呢?我个人认为应为因为获取它是不需要制定参数,更容易和DI框架集成,我们可以通过如下代码获取ILogger<T>,而不需要先获取ILoggerFactory
日志结构
.net core的日志系统支持不同的日志框架,并且对外统一了日志的格式,不管使用哪种库,它的格式是一样的。这样的好处是切换日志框架时,上层应用无需修改。一个基本的日志样例为:
info: MyLogger[0]
hello world. 03/23/2019 22:37:58
它主要包括如下几个部分:
日志级别: 日志级别定义在LogLevel枚举中,它包含如下几个级别:Trace、Debug、Information、Warning、Error、Critical。另外还有一个特殊级别None,它的值比Critical还高,主要用于关闭日志输出, 当配置最小输出级别时None时,由于它的级别比Critical还高,则所有的日志都不会输出。
日志源: 用于标志日志的数据源,它是一个字符串,保存在具体的ILog对象中,本例中就是"MyLogger"
事件Id: 它标志了日志的序列号,大部分的时候都不会用到它
日志体: 日志内容
日志提供程序
ASP.NET Core 内置了如下几种日志提供程序:
控制台
调试
EventSource
EventLog
TraceSource
前面的示例中,如果要增加其他的日志提供程序,可以在DI框架初始化的时候进行。
虽然系统内置了这些日志框架比较方便,但实际上用起来是不够用的,比如说它不能输出到文件,不过好在.net core提供了比较强大的扩展机制。
采用同样的方式,我们也可以使用NLog、Seriallog等更为专业的日志框架,甚至他们已经做好了适配,直接拿来用都可以。
elmah.io
Gelf
JSNLog
KissLog.net
Loggr
NLog
Sentry
Serilog
Stackdriver
Log配置文件
一个典型的日志系统的配置文件如下:
我们可以通过AddConfiguration函数指定日志配置文件:
到此这篇关于ASP.NET Core日志系统的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持本站。
点击排行
标签云
-
C#
seo
SQLserver
IIS
.NET
SSL
程序员
VS
编程语言
https
微信小程序
jQuery
服务器
个人博客
网站关键词排名
301
.net8
http
KOL
C#集合
.NET框架
命名空间
面向对象编程
异常处理
异步编程
设计模式
编程学习网站
百度分享js
关键词研究工具
网页加载速度
外部链接优化
异步加载
snv
C#接口
装潢设计
响应式
自动备份
个人网站
WPF
数据库优化
winform
UI
编程
Ngrok
内网穿透
开源框架
NanUI
网站
清明节
html
生成img
nginx
签到
2023跨年
快捷方式
标签打印
icon图标
博客模板
Web前端框架
JavaScript
TortoiseSVN
VS2019
数据库自动同步工具
Serv-U
.NETCore
微信接口
数组去重
404页面
保存图片
QQ
幸福
鸡汤
小沈子
超实用工具箱
Layui
51劳动节
C#面试题
疫情
数据库
Queue队列
网页
挖呀挖