广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NET Core的日志系统介绍
  • 721
分享到

ASP.NET Core的日志系统介绍

2024-04-02 19:04:59 721人浏览 独家记忆
摘要

.net core是内置了日志系统的,本文这里简单的介绍一下它的基本用法。如下是一个简单的示例:  var service = new ServiceCollection(

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

--结束END--

本文标题: ASP.NET Core的日志系统介绍

本文链接: https://www.lsjlt.com/news/153801.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • ASP.NET Core的日志系统介绍
    .net core是内置了日志系统的,本文这里简单的介绍一下它的基本用法。如下是一个简单的示例:  var service = new ServiceCollection(...
    99+
    2022-11-13
  • ASP.NET Core的日志系统实例分析
    本文小编为大家详细介绍“ASP.NET Core的日志系统实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET Core的日志系统实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-02
  • Linux系统中日志详细介绍
    目录1、日志相关服务2、系统中常见的日志文件1、日志相关服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务。RedHat认为syslogd已经不能满足在工作中的需求,rsyslog...
    99+
    2022-06-04
    Linux日志管理 Linux日志分析详解
  • mysql日志系统redolog和binlog介绍
    首先,我们先来看看一次查询/更新语句流程图 本文会将重点放在执行器<->存储引擎之间的交互。 mysql不是每次数据更改都立刻写到磁盘,而是会先将修改后的结果暂存在内存...
    99+
    2022-11-13
  • ASP.NET Core中的Razor页面介绍
    目录简介Why?创建Razor页面应用程序ASP.NET Core Razor页面 - 核心功能模型绑定HandlersTag Helpers and HTML Helpers路由总...
    99+
    2022-11-13
  • ASP.NET Core中的Blazor组件介绍
    目录关于组件组件类静态资产路由与路由参数组件参数请勿创建会写入其自己的组参数属性的组件子内容属性展开任意参数捕获对组件的引用在外部调用组件方法以更新状态使用 @ 键控制是否保留元素和...
    99+
    2022-11-13
  • ASP.NET Core中的Ocelot网关介绍
    目录1.简介2.Ocelot配置2.1基础集成(Basic Implementation)2.2集成IdentityServer(With IdentityServer)2.3多个网...
    99+
    2022-11-13
  • mysql日志系统redo log和bin log介绍
    首先,我们先来看看一次查询/更新语句流程图 本文会将重点放在执行器<->存储引擎之间的交互。 mysql不是每次数据更改都立刻写到磁盘,而是会先将修改后的结果暂存在内存中,当一段时间后,再一次性将多个修改写...
    99+
    2022-08-25
  • Android 日志系统Logger源代码详细介绍
     我们知道,在Android系统中,提供了一个轻量级的日志系统,这个日志系统是以驱动程序的形式实现在内核空间的,而在用户空间分别提供了Java接口和C/C++接口来使...
    99+
    2022-06-06
    Android
  • ASP.NET Core的中间件与管道介绍
    今天来讨论一个ASP.NET Core 很重要概念管道和中间件,在ASP.NET Core中,针对HTTP请求采用pipeline也就是通常说的管道方式来处理,而管道容器内可以挂载很...
    99+
    2022-11-12
  • ASP.NET Core扩展库的相关功能介绍
    目录简介日志扩展轻量级实体映射AspNetCore Http服务端的扩展HttpClient扩展令牌提供器并行队列处理亲爱的.Neter们,在我们日复一日的编码过程中是不是会遇到一些...
    99+
    2022-11-11
  • .net core日志系统相关总结
    目录前言正文前言 本节开始整理日志相关的东西。先整理一下日志的基本原理。 正文 首先介绍一下包: 1.Microsoft.Extengsion.Logging.Abstratio...
    99+
    2022-11-12
  • 简单介绍Fedora Core 3系统应用
    Fedora Core 3是一种基于Linux操作系统的发行版,它是由Fedora项目开发的。Fedora Core 3提供了许多不...
    99+
    2023-09-23
    Fedora
  • jdk-logging log4j logback日志系统实现机制原理介绍
    目录1 需要解决的疑惑2 jdk自带的logging2.1 使用案例2.2 简单过程分析:3 log4j13.1 使用案例3.1.1 需要的jar包3.1.2 使用方式3.2 获取L...
    99+
    2022-11-13
  • ASP.Net Core中的日志与分布式链路追踪
    目录.NET Core 中的日志控制台输出非侵入式日志Microsoft.Extensions.LoggingILoggerFactoryILoggerProviderILogger...
    99+
    2022-11-13
  • ASP.NET Core扩展库之Http日志的使用详解
    目录一、开启服务端请求日志 二、开启客户端请求日志 三、示例     最佳实践都告诉我们不要记录请求的详细日志,因为这有安全问题,但在实际开发...
    99+
    2022-11-12
  • ASP.NET Core扩展库之日志功能的使用详解
    目录一、简介 二、使用 三、配置 四、配置日志级别 五、日志级别的动态修改 六、本地文件日志配置 七、容器化支持 八、测试支持 九、禁用Serilog  &nbs...
    99+
    2022-11-11
  • MongoDB中4种日志的详细介绍
    前言 任何一种数据库都有各种各样的日志,MongoDB也不例外。MongoDB中有4种日志,分别是系统日志、Journal日志、oplog主从日志、慢查询日志等。这些日志记录着MongoDB数据库不同方面的...
    99+
    2022-10-18
  • Go语言中log日志库的介绍
    目录一、标准库log介绍1、使用Logger2、配置logger 2.1、标准logger的配置二、自定义日志库 1、需要满足的需求2、了解下runtime包3、...
    99+
    2022-11-12
  • ASP.NET Core通用主机的系统配置
    ASP.NET Core 2.0 中的 WebHost(实现 IWebHost 的基类)是用于为进程提供 HTTP 服务器功能的基础结构项目,例如,如果...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作