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

news/2024/2/28 17:00:14

在本文中,我们将探讨如何在 .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.ppmy.cn/news/1065203.html

相关文章

JavaWeb-LeadNews-Day8-后台管理系统实战

JavaWeb-LeadNews-Day8-后台管理系统实战 登录和网关登录网关 敏感词新增查询列表修改删除 频道管理新增查询列表修改删除 用户审核查询列表审核成功审核成功新增自媒体用户 审核失败 自媒体文章人工审核查询文章列表查看文章详情文章审核失败文章审核成功 来源Gitee 登录和网关…

【LLM】解析pdf文档生成摘要

文章目录 一、整体思路二、代码三、小结Reference 一、整体思路 非常简单的一个v1版本 利用langchain和pdfminer切分pdf文档为k块&#xff0c;设置overlap等参数先利用prompt1对每个chunk文本块进行摘要生成&#xff0c;然后利用prompt2对多个摘要进行连贯组合/增删模型可以使…

第二章 Linux基础命令

目录 一、 Linux的目录结构  1.学习目标  2.Linux的目录结构  3.Linux路径的描述方式  4.本小节的总结  5.课后练习 二、 Linux命令入门  2.1 Linux命令基础  1.学习目标  2.什么是命令、命令行  3.Linux命令基础格式  4.本小节的总结 2.2 ls命令入门  1…

C++ Bit fields

Questions “:” (colon) in C/C struct, what does it mean?What does C struct syntax “a : b” mean?What does :1 and :8 mean? Example #1 https://en.wikipedia.org/wiki/Bit_field struct BoxProps {unsigned int opaque : 1;unsigned int fill_color …

Nginx详解 一:编译安装Nginx和Nginx模块

文章目录 1.HTTP 和 Nginx1.1 Socket套接字1.2 HTTP工作机制1.2.1一次http事务1.2.2 资源类型1.2.3提高HTTP连接性能 2. I/O模型2.1 I/O模型相关概念2.2 网络I/O模型2.2.1 **阻塞型** **I/O** 模型&#xff08;blocking IO&#xff09;2.2.2 **非阻塞型** **I/O** **模型** **(…

Hive原理剖析

一、简介 Hive是建立在Hadoop上的数据仓库框架&#xff0c;提供大数据平台批处理计算能力&#xff0c;能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类似SQL的Hive Query Language语言操作结构化数据&#xff0c;其基本原理是将HQL语言自动转换成MapReduce任务…

【从零单排Golang】第十四话:使用rate和ratelimit实现限流限速

在研发中&#xff0c;我们经常会面对到处理并发逻辑的场景&#xff0c;尤其是有时候在与第三方平台对接的场景下&#xff0c;会遇到请求限流限QPS的要求。对于限流或者限速&#xff0c;我们通常会用两种算法来满足需要&#xff1a; 令牌桶算法&#xff1a;在特定容量的桶里面装…

【附安装】R语言4.3.0安装教程

软件下载 软件&#xff1a;R语言版本&#xff1a;4.3.0语言&#xff1a;简体中文大小&#xff1a;77.74M安装环境&#xff1a;Win7及以上版本&#xff0c;64位操作系统硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;h…

【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶

大家好&#xff01;继续我们关于Go语言中字符串函数的探索。字符串是编程中常用的数据类型&#xff0c;而Go语言为我们提供了一系列实用的字符串函数&#xff0c;方便我们进行各种操作&#xff0c;如查找、截取、替换等。在上一篇博客的基础上&#xff0c;我们将继续介绍更多字…

编程题练习@8-26

题目一&#xff1a; 题目描述 你的团队最近更新了语音识别的算法&#xff0c;瑰需要对更新之后的算法模型进行识别率指标统计。 语音识别率指标通常为WER(Word Error Rate)即计算语音识别文本中出现错误的字总数占标准文本中总字数的比例。为了使识别出来的文本序列和标准的文本…

【LeetCode-面试经典150题-day15】

目录 104.二叉树的最大深度 100.相同的树 226.翻转二叉树 101.对称二叉树 105.从前序与中序遍历序列构造二叉树 106.从中序与后序遍历序列构造二叉树 117.填充每个节点的下一个右侧节点指针Ⅱ 104.二叉树的最大深度 题意&#xff1a; 给定一个二叉树 root &#xff0c;返回其…

R语言画样本不均衡组的箱线图

# 导入 ggplot2 包 library(ggplot2)# 示例数据框&#xff0c;包含数值数据和分组信息 data <- data.frame(Group c(rep("Group A",10), rep("Group B",15),rep("Group C",20)),Value c(rnorm(10, mean 10, sd 2),rnorm(15, mean 15, sd…

Python语言实现React框架

迷途小书童的 Note 读完需要 6分钟 速读仅需 2 分钟 1 reactpy 介绍 reactpy 是一个用 Python 语言实现的 ReactJS 框架。它可以让我们使用 Python 的方式来编写 React 的组件&#xff0c;构建用户界面。 reactpy 的目标是想要将 React 的优秀特性带入 Python 领域&#xff0c;…

php curl apache 超时 500错误

web请求超过40s 就返回500错误 php的超时时间 set_time_limit无效 curl CURLOPT_TIMEOUT 设置请求时间 无效 设置apache Timeout 链接超时 无效 最后添加 Fcgid才可以 apache 配置文件 httpd.conf <IfModule mod_fcgid.c>FcgidProcessLifeTime 10000FcgidIOTimeout 1000…

openGauss学习笔记-51 openGauss 高级特性-列存储

文章目录 openGauss学习笔记-51 openGauss 高级特性-列存储51.1 语法格式51.2 参数说明51.3 示例 openGauss学习笔记-51 openGauss 高级特性-列存储 openGauss支持行列混合存储。行存储是指将表按行存储到硬盘分区上&#xff0c;列存储是指将表按列存储到硬盘分区上。 行、列…

Go 自学:切片slices

以下代码展示了两种建立slice的方法。 我们可以使用sort函数给slice排序。 package mainimport ("fmt""sort" )func main() {var fruitList []string{"Apple", "Tomato", "Peach"}fmt.Printf("Type of fruitlist is…

【太多网工对NAT还存在这4种误解!你是其中一个吗?】

NAT是解决公网地址不够用大家最熟悉的网络技术之一&#xff0c;而NAT最依赖的是NAT translation表项&#xff0c;至于NAT的概念和背景这里不再解释&#xff0c;网络上有很多关于此的类似介绍&#xff0c;自己搜索即可。下面主要是针对大家对NAT的一些误解进行分析。 1 误解一…

DiskCatalogMaker for Mac简单智能快速的磁盘管理工具

DiskCatalogMaker是一款Mac上的磁盘目录管理工具。它可以帮助用户快速创建和管理磁盘目录&#xff0c;方便查找和访问存储在磁盘上的文件和文件夹。它具有快速扫描和索引功能&#xff0c;生成详细的目录列表&#xff0c;支持关键字搜索和自定义标签。 此外&#xff0c;DiskCat…

数学期望讲解

数学期望讲解 &#x1f618;数学期望是概率论中的一个重要概念&#xff0c;它表示一个随机变量在一次试验中可能取得的平均值。数学期望可以用来描述一个随机现象的平均特征&#xff0c;也可以用来预测一个随机事件的长期结果。数学期望的计算方法取决于随机变量的类型和分布。…

【GoLang】go入门:go语言执行过程分析 常见数据类型(基本数据类型)

1、go语言执行过程分析 【1】执行流程分析 通过 go build 进行编译 运行上一步生成的可执行文件 通过 go run 命令直接运行 【2】上述两种执行流程的区别 在编译时&#xff0c;编译器会将程序运行时依赖的库文件包含在可执行文件中&#xff0c;所以可执行文件会变大很多通过g…
最新文章