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

news/2024/5/19 20:57:23 标签: .netcore

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

相关文章

Leetcode刷题之1658. 将 x 减到 0 的最小操作数

题目: 算法分析: 可以看出,这道题本意是从计算两侧和为x 的数字, 要求数量最少, 那我们可以反向思考, 假如整个数组的和为sum, 那么我们就可以求中间部分和为sum-x的数字(当然必须连续), 当中间部分的数字同时达到和为sum-x以及长度最长两个要求时, 两侧数字也就达到了和为x以…

淘宝店铺运营客服工作技巧

售前区块 一、询单KPI项目 &#xff08;一&#xff09;询单转化 1&#xff09;咨询未拍&#xff0c;意向客户的登记跟进&#xff0c;查看客户未拍的原因是什么&#xff0c;看是否可以解决问题&#xff0c;打消客户的忧虑&#xff0c;达成订单&#xff0c;当天无法拍的&#xff…

E - Excellent Views

Problem - E - Codeforces 问题描述&#xff1a;数组H大小都不相同。从i到j是可行的&#xff0c;当且仅当 不存在 k &#xff0c;使 ∣ i − k ∣ ≤ ∣ i − j ∣ , H k > H j 不存在k&#xff0c;使 \\ |i - k| \leq |i - j|, \quad H_k > H_j 不存在k&#xff0c;使…

提升网站排名:SEO优化的实用策略和技巧

导言&#xff1a; 搜索引擎优化&#xff08;SEO&#xff09;是提高网站在搜索引擎中排名的关键策略&#xff0c;有助于提升网站的可见性和流量。本文将分享一些实用的SEO优化策略和技巧&#xff0c;帮助您在竞争激烈的网络世界中脱颖而出。 一、关键词研究和优化 关键词选择&…

度加剪辑App的MMKV应用优化实践

作者 | 我爱吃海米 导读 移动端开发中&#xff0c;IO密集问题在很多时候没有得到充足的重视和解决&#xff0c;贸然的把IO导致的卡顿放到异步线程&#xff0c;可能会导致真正的问题被掩盖&#xff0c;前人挖坑后人踩。其实首先要想的是&#xff0c;数据存储方式是否合理&#x…

导出功能exportExcel (现成直接用)

1. 实体类字段上加 Excel(name "xxx"), 表示要导出的字段 Excel(name "订单号")private String orderNo; 2. controller (get请求) /*** 导出订单列表*/ApiOperation("导出订单列表")GetMapping("/export")public void export(HttpS…

自己定义一个播放器

参考智能课件里的PPTVideoView模块&#xff1a; package com.zhl.courseware.filtervideo;import android.content.Context; import android.media.MediaMetadataRetriever; import android.media.MediaPlayer; import android.net.Uri; import android.os.Build;import com.z…

docker: /lib64/libc.so.6: version `GLIBC_2.32‘ not found (required by docker)

Linux环境 Ubuntu 22.04 docker 最新版 jenkins docker 版本(以下版本都会报错 jenkins/jenkins:centos7 jenkins/jenkins:lts-centos7 jenkins/jenkins:ltsdocker-compose.yml配置 version: 3.6 services:gitlab:image: twang2218/gitlab-ce-zhrestart: alwayscontainer_nam…