在C#中使用 NLog 库进行日志记录

2024-06-04 06:52

本文主要是介绍在C#中使用 NLog 库进行日志记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NLog 是 .NET 的日志记录框架。具有丰富的日志路由和管理能力,极大地帮助您生成和管理日志。NLog 是一个库,可以轻松地同时记录和管理多个不同区域(例如控制台、数据库或文本文件)中的数据。我们可以按如下方式列出 NLog 的功能:

扩展:

在日志记录时,您可能希望将日志记录保存在不同的位置,例如数据库、文本文件或控制台。NLog 允许您通过单个配置文件执行这些操作。
此外,还有一些解决方案适用于缓冲、负载平衡、异步写入和许多其他场景。

易于配置:

配置文件非常简单。您可以通过单个配置文件控制和管理整个过程。

可模板:

日志记录时最重要的步骤之一是为遇到的不同方案创建不同的模板。例如,如果您想为要记录的文件指定不同的名称,NLog 库将轻松为您提供此名称。

NLog 在最简单的小型应用程序以及大型和复杂的项目中非常有用。由于其丰富的配置功能,您可以在所有项目中使用它。

如何在 .NET 项目中使用 Nlog 库?

1)安装依赖:

在开始处理应用程序之前,必须安装一些依赖项包。

打开 NuGet 包管理器:
Visual Studio 提供了多种使用 NuGet 包管理器的方法。

图片

要做的第一件事是打开包管理器控制台。可以使用**“工具”>“NuGet 包管理器”>“包管理器控制台**”执行此操作,如图 1–1–1 所示。

图片

在打开的控制台中,在打开的控制台中运行图 1–1–2 (Install-Package NLog.Extensions.Logging) 中的命令。

2)创建记录器:

对于我们的项目,我们将使用最简单的方法在 NLog 的 LogManager 类中创建一个记录器。它提供了 GetCurrentClassLogger() 方法,用于获取每个类的唯一记录器。与全局配置的记录器不同,每个类的记录器可帮助您轻松捕获日志消息的来源。

我们创建的记录器将使用 NLog 的默认日志级别系统。日志系统由以下 6 个级别组成:

致命:用于报告强制关闭应用程序的错误。
错误:用于记录程序执行期间发生的严重问题。
警告:用于报告非关键异常行为。
信息:用于向系统管理员和最终用户突出显示应用程序进度的信息性消息。
调试:用于调试包含有关应用程序处理的扩展信息的消息。
跟踪:用于跟踪代码。

让我们看看如何在代码中使用 logger。

图片

Program.cs文件应如图 1–2–1 中的代码所示。

3)配置记录器:

NLog 具有丰富的配置能力,提供了两种配置记录器的方法;以编程方式或通过配置文件。您可以在 Nlog 配置选项文档中找到有关它们的详细信息。

在本文中,我们将使用 nlog.config 文件配置记录器。

图片

首先,我们需要做的是在项目的根目录下创建一个 nlog.config 文件。您可以通过按 CTRL + SHIFT + A,选择 XML 文件类型并在打开的窗口中输入名称 nlog.config 来完成,如图 1–3–1 所示。

图片

然后,我们必须将文件的“复制到输出目录”属性设置为“始终复制”,如图 1-3-2 所示。可以通过右键单击解决方案资源管理器中的文件并选择“属性”选项来完成此操作。

图片

我们的配置文件必须如图 1-3-3 所示。在图 1-3-3 中,我们的配置由两部分组成:设置日志记录目标和设置日志记录规则。

我们决定为项目添加 3 个日志记录目标:控制台和 2 个日志文件。在配置文件中,它们中的每一个都将由一个单独的 XML 元素表示。让我们在 nlog.config 文件中编写目标。

然后,我们可以创建规则。在 NLog 中,每个规则都可以应用于多个记录器和目标,并且必须编写为单独的 XML 元素。

第一条规则强制所有记录器将具有调试日志和更高严重性日志的日志写入名为 all_logs_file 的目标。

第二条规则强制所有记录器将警告和更高严重性的日志写入名为 important_logs_file 的目标。

第三条规则强制所有记录器将应用程序生成的所有日志写入控制台。

4)为项目场景创建类:

我们将使用 2 个额外的类来展示如何使用我们的日志记录配置。

图片

为类创建一个新文件,如图 1–4–1 所示;可以通过右键单击项目“添加”>“新项”在打开的窗口中选择 C# 类,也可以按 CTRL + SHIFT + A 添加类。

图片

第一个文件将包含一个 Person 类。您可以在图 1–4–2 中看到代码片段。

第二个文件将包含 Product 类。您可以在图 1–4–3 中看到代码片段。

我们可以将对象分解为具有“@”解构运算符的值的属性,如图 1-4-2 和图 1-4-3 所示。

5)使用记录器记录:

我们将记录一些应用程序消息来演示记录器的工作原理,每个级别至少一个。NLog API 对于此类任务非常有用。

在我们的项目中,NLog 记录器提供了 6 种日志记录方法:Trace、Info、Warn、Debug、Error 和 Fatal。

图片

如图 1–5–1 所示,我们的应用程序现在已准备好写入一些日志。现在,让我们构建并运行程序以查看结果。

图片

执行后,控制台的输出应如图 1–5–2 所示。

图片

现在,让我们检查写入文件中的日志。如图 1–5–3 所示,这些文件位于 C:\\logs 中。

图片

首先,检查您的important.json文件,它应该如图 1–5–4 所示。

图片

然后,检查您的all.json文件,它应该如图 1–5–5 所示。

恭喜!所有步骤都成功完成!现在,你已使用 NLog 为 .NET 控制台应用程序配置了具有多个日志记录目标的日志记录系统。

这篇关于在C#中使用 NLog 库进行日志记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029372

相关文章

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹