我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ASP.NET Core的日志系统实例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ASP.NET Core的日志系统实例分析

本文小编为大家详细介绍“ASP.NET Core的日志系统实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET Core的日志系统实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

.net core是内置了日志系统的,如下是一个简单的示例: 

var service = new ServiceCollection()    .AddLogging(logging => { logging.AddConsole(); }); var provider   = service.BuildServiceProvider();var logFactory = provider.GetService<ILoggerFactory>();var logger     = logFactory.CreateLogger("MyLogger"); logger.LogInformation("hello world. {0}", DateTime.Now);

主要步骤如下:

  • 在DI服务中通过AddLogging的配置日志服务

  • 通过DI服务获取ILoggerFactory

  • 通过日志工厂创建ILogger

  • 通过ILogger写日志

需要注意的是,日志是异步输出的,如果调用logger.LogInformation后程序马上结束,是不会有日志输出的。

ILogger和ILogger<T>

ILogger是我们实际用-来记录日志的对象,前面的例子已经演示了它的使用方法,在.net core日志系统中,还提供了另一个接口ILogger<T>,它的创建方式如下:

var logger = logFactory.CreateLogger<Program>();

ILogger<T>本身也是继承自ILogger的,也就是说,他们的用法基本一样,ILogger<T>的主要区别是创建的时候无需制定数据源名称,它的数据源就是类名,也就是说,它和如下方式创建的ILogger功能基本上是一致的。

var logger = logFactory.CreateLogger(typeof(Program).FullName);

那么为什么要创建一个ILogger<T>呢?我个人认为应为因为获取它是不需要制定参数,更容易和DI框架集成,我们可以通过如下代码获取ILogger<T>,而不需要先获取ILoggerFactory

var logger = provider.GetService<ILogger<Program>>();

日志结构

.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框架初始化的时候进行。 

var service = new ServiceCollection()    .AddLogging(logging => { logging.AddConsole(); }); var provider   = service.BuildServiceProvider();var logFactory = provider.GetService<ILoggerFactory>();var logger     = logFactory.CreateLogger("MyLogger"); logger.LogInformation("hello world. {0}", DateTime.Now);

虽然系统内置了这些日志框架比较方便,但实际上用起来是不够用的,比如说它不能输出到文件,不过好在.net core提供了比较强大的扩展机制。

采用同样的方式,我们也可以使用NLog、Seriallog等更为专业的日志框架,甚至他们已经做好了适配,直接拿来用都可以。

  • elmah.io

  • Gelf

  • JSNLog

  • KissLog.net

  • Loggr

  • NLog

  • Sentry

  • Serilog

  • Stackdriver

Log配置文件

一个典型的日志系统的配置文件如下:

{    "Logging": {         "LogLevel": { // 表示全局             "Default": "Warning" // 不指定CategoryName,应用于所有Category         },        "Console": { // 指定 ProviderName,仅针对于 ConsoleProvider             "Default": "Warning",            "Microsoft": "Error" // 指定CategoryName为Microsoft的日志级别为Error        }    }}

我们可以通过AddConfiguration函数指定日志配置文件: 

var configBuilder = new ConfigurationBuilder().AddJsonFile("appsettings.json");var config        = configBuilder.Build();var service = new ServiceCollection()    .AddLogging(logging =>    {        logging.AddConfiguration(config.GetSection("Logging"));        logging.AddConsole();    });

读到这里,这篇“ASP.NET Core的日志系统实例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ASP.NET Core的日志系统实例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ASP.NET Core的日志系统实例分析

本文小编为大家详细介绍“ASP.NET Core的日志系统实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET Core的日志系统实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。.net
2023-07-02

ASP.NET Core配置系统实例分析

本文小编为大家详细介绍“ASP.NET Core配置系统实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET Core配置系统实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。ASP.NET
2023-07-05

ASP.NET Core Zero模块系统的示例分析

这篇文章主要为大家展示了“ASP.NET Core Zero模块系统的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET Core Zero模块系统的示例分析”这篇文章吧。简介
2023-06-29

ASP.Net Core中日志与分布式链路追踪的示例分析

这篇文章主要介绍了ASP.Net Core中日志与分布式链路追踪的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。.NET Core 中的日志控制台输出最简单的日志,就
2023-06-29

.Net Core日志记录器实例分析

这篇“.Net Core日志记录器实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“.Net Core日志记录器实例分析
2023-07-02

ASP.NET Core依赖注入实例分析

今天小编给大家分享一下ASP.NET Core依赖注入实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。ASP.NET
2023-06-30

Linux系统日志的实时分析工具

在Linux系统中,有多个实时分析日志的工具。以下是一些常用的工具:tail:tail命令用于查看文件的末尾内容,在日志监控中经常用到,可以实时查看日志的最后几行内容。通过执行tail -f命令,可以持续输出文件末尾的内容,这对于实时监控日
Linux系统日志的实时分析工具
2024-09-25

centos中日志式文件系统的示例分析

这篇文章主要介绍了centos中日志式文件系统的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、日志式文件系统通常在系统运行中写入文件内容的同时,并没有写入文件的元
2023-06-10

Linux系统硬件故障日志的示例分析

这篇文章主要介绍Linux系统硬件故障日志的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,在
2023-06-28

Ruby与Linux系统日志分析

Ruby 是一种灵活且强大的编程语言,可以用来分析和处理 Linux 系统日志读取日志文件首先,你需要读取系统日志文件。在 Linux 系统中,日志文件通常位于 /var/log/ 目录下。例如,要读取系统日志文件 /var/log/sys
Ruby与Linux系统日志分析
2024-09-15

Slf4j与其他日志系统兼容的示例分析

这篇文章主要介绍Slf4j与其他日志系统兼容的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 接口简介在java的体系里,主要有slf4j和common-logging两种日志体系接口。实现的框架有很多,
2023-05-30

Java日志性能实例分析

这篇文章主要介绍“Java日志性能实例分析”,在日常操作中,相信很多人在Java日志性能实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java日志性能实例分析”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-19

python打印日志实例分析

这篇“python打印日志实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python打印日志实例分析”文章吧。一、必
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录