.NET Core 实现日志打印输出在控制台应用程序中

在本文中,我们将探讨如何在 .NET Core 应用程序中将日志消息输出到控制台,从而更好地了解应用程序的运行状况。

.NET Core 实现日志打印输出在控制台应用程序中

在 .NET Core 中,日志输出打印是使用 Microsoft.Extensions.Logging 命名空间中的类和方法实现的。首先,我们需要确保在项目中添加了以下必要的依赖包:

  • Microsoft.Extensions.Configuration: 用于读取配置文件。
  • Microsoft.Extensions.Configuration.Json: 用于从 JSON 文件加载配置。
  • Microsoft.Extensions.DependencyInjection: 用于依赖注入。
  • Microsoft.Extensions.Logging: 用于日志记录。
  • Microsoft.Extensions.Logging.Console: 用于在控制台中输出日志。

现在,让我们来看一下如何在 .NET Core 控制台应用程序中实现日志输出打印

步骤 1:读取配置文件

首先,我们需要读取配置文件,以便配置日志。在示例中,我们将使用 appsettings.json 文件来配置日志级别。如下代码:

var config = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true).Build();

步骤 2:配置日志

接下来,我们需要配置日志以指定日志级别和输出目标。在示例中,我们将配置日志以将日志消息输出到控制台。如下代码:

var serviceProvider = new ServiceCollection().AddLogging(builder =>{builder.AddConfiguration(config.GetSection("Logging"));builder.AddConsole();}).BuildServiceProvider();

步骤 3:获取日志记录器

一旦配置了日志,我们可以通过依赖注入来获取日志记录器,然后使用该记录器来记录不同级别的日志消息。如下代码:

var logger = serviceProvider.GetRequiredService<ILogger<Program>>();

步骤 4:记录日志消息

现在,我们可以使用获得的日志记录器来记录不同级别的日志消息。如下代码:

logger.LogInformation($"hello .net core");
logger.LogError($"error message!!!");

完整示例

下面是将上述步骤整合在一起的完整示例代码:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System;class Program
{static void Main(string[] args){var config = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true).Build();var serviceProvider = new ServiceCollection().AddLogging(builder =>{builder.AddConfiguration(config.GetSection("Logging"));builder.AddConsole();}).BuildServiceProvider();var logger = serviceProvider.GetRequiredService<ILogger<Program>>();logger.LogInformation($"hello .net core");logger.LogError($"error message!!!");// 其他代码...}
}

配置 appsettings.json

在示例中,我们在 appsettings.json 文件中配置了日志级别。确保您的 appsettings.json 文件类似于以下内容:

{"Logging": {"LogLevel": {"Default": "Information"}},"MyAppSettings": {"Setting1": "Value1","Setting2": "Value2"}
}

如图所示:

在这里插入图片描述

在上述代码中,我们首先读取配置文件,然后配置了日志记录,使其输出到控制台。我们使用 AddLogging 方法和 AddConsole 提供程序将日志配置到控制台输出。

运行应用程序

运行应用程序后,您将在控制台窗口中看到类似以下内容的日志消息:

info: Program[0]Hello .NET Core
fail: Program[0]Error message!

如此一来,您的应用程序就能够在控制台中输出日志消息了。

总结

在 .NET Core 中,实现日志记录并将日志消息输出到控制台是一项关键的任务,有助于监控应用程序的状态和运行状况。通过配置日志提供程序和使用 ILogger 接口,您可以在应用程序中捕获各种级别的日志消息,包括信息性消息和错误消息。这使得您可以更好地理解和追踪应用程序的运行,更快地发现和解决问题。始终牢记,良好的日志记录实践是构建健壮应用程序的关键一步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/89790.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嬴图Ultipa | 一文了解关于图数据库的一点儿干货

本篇包括以下内容点&#xff1a; 数据库主要技术分类 图是什么&#xff1f; 图的模式 图数据库 VS.关系型数据库 图数据库VS.其他NOSQL的对比 并非所有的图数据库都一样&#xff01; 根据Gartner预测&#xff0c;“到2025年&#xff0c;使用图技术进行数据和分析创新…

利用敏捷开发工具实现敏捷项目管理的实践经验分享

Scrum中非常强调公开、透明、直接有效的沟通&#xff0c;这也是“可视化的管理工具”在敏捷开发中如此重要的原因之一。通过“可视化的管理工具”让所有人直观的看到需求&#xff0c;故事&#xff0c;任务之间的流转状态&#xff0c;可以使团队成员更加快速适应敏捷开发流程。 …

客服系统哪个好用?

在当今竞争激烈的商业环境中&#xff0c;良好的客户服务是企业成功的关键因素之一。通过提供优质的客户服务&#xff0c;企业可以吸引、留住、回馈顾客&#xff0c;增加口碑宣传&#xff0c;提高产品或服务质量&#xff0c;同时还可以减少客户投诉率&#xff0c;从而为企业带来…

FFmpeg4.3.1+h264在windows下编译与VS2017项目集成

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。本文是音视频系…

golang-bufio 缓冲读

缓冲 IO 计算机中我们常听到这样的两种程序优化方式&#xff1a; 以时间换空间以空间换时间 今天要来看的缓冲IO就是典型的以空间换时间&#xff0c;它的基本原理见上图。简单的解释就是&#xff1a;程序不再直接去读取底层的数据源&#xff0c;而是通过一个缓冲区来进行读取…

链表(详解)

一、链表 1.1、什么是链表 1、链表是物理存储单元上非连续的、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表的指针地址实现&#xff0c;有一系列结点&#xff08;地址&#xff09;组成&#xff0c;结点可动态的生成。 2、结点包括两个部分&#xff1a;&#x…

[JavaWeb]【十三】web后端开发-原理篇

目录 一、SpringBoot配置优先级 1.1 配置优先级比较 1.2 java系统属性和命令行参数 1.3 打包运行jar 1.4 综合优先级​编辑 二、Bean管理 2.1 获取bean 2.2 bean作用域 2.2.1 五种作用域 2.2.2 配置作用域 2.3 第三方bean 2.3.1 编写公共配置类 三、SpringBoot原理 …

【mq】如何保证消息可靠性

文章目录 mq由哪几部分组成rocketmqkafka 为什么需要这几部分nameserver/zookeeper可靠性 broker可靠性 生产者消费者 mq由哪几部分组成 rocketmq kafka 这里先不讨论Kafka Raft模式 比较一下&#xff0c;kafka的结构和rocketmq的机构基本上一样&#xff0c;都需要一个注册…

Autoware.universe部署05:实车调试

文章目录 一、建图1.1 点云地图1.2 高精地图 二、参数配置三、传感器数据通信接口3.1 雷达点云3.2 图像3.3 IMU3.4 GNSS RTK 四、实车调试4.1 编写启动4.2 修改传感器外参4.3 修改车身参数4.4 实车调试 本文介绍了 Autoware.universe 在实车上的部署&#xff0c;本系列其他文章…

fatal: ServicePointManager 不支持具有 socks5 方案的代理。

报错 解决前 git config --global --list 查看git的设置 解决后 // 代理更改为http (7890是我的代理软件clash的port默认的&#xff0c;有些博客使用的是1080&#xff0c;依个人情况而定) git config --global http.proxy http://127.0.0.1:7890 git config --global https…

[递归] 自然数分解之方案数

[递归] 自然数分解之方案数_慕梅^的博客-CSDN博客 同样的思路&#xff0c;只是解决的问题不一样 #include <cstdio> #include <algorithm> #include <cstring> using namespace std;int func(int pre,int now){int max_ -1;for (int i1;2*i<now;i){if …

【模拟】算法实战

文章目录 一、算法原理二、算法实战1. leetcode1576 替换所有的问号2. leetcode495 提莫攻击3. leetcode6 N字形变换4. leetcode38 外观数列5. leetcode1419 数青蛙 三、总结 一、算法原理 模拟就是用计算机来模拟题目中要求的操作&#xff0c;模拟题目通常具有代码量大、操作…