在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 控制台应用程序配置了具有多个日志记录目标的日志记录系统。

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

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

相关文章

云服务训练YOLOv8-训练改进

迪菲赫尔曼录制的视频 准备工作: 1、安装VSCode, 2、安装VSCode插件, Remote-SSH、Chinese(Simplified) 3、注册AutoDL账号 AutoDL算力云 4、上传数据集: 训练集 验证机 测试集 5、租服务器 6、连接服务器 7、下载代码…

天数智芯的天垓150 GUP性能及应用

天数智芯的天垓150是一款高性能的通用GPU训练产品,其性能特点及应用场景可以清晰归纳如下: 性能特点 高度兼容性: 天垓150采用通用GPU架构,兼容国际主流GPU通用计算模型,确保与各种主流系统和应用的顺畅集成。广泛支…

家庭服务器

以下是一些您可以使用家庭服务器的方式: 家庭自动化任务:您可以使用家庭服务器来运行自动化任务,例如控制智能家居设备、定时备份数据、监控家庭网络等。 游戏服务器:如果您是游戏爱好者,您可以在家庭服务器上托管游戏…

Android R及以上版本中APP外部存储实现

背景: 从 Android R开始,Google 引入了一些新的限制,以增强用户数据的隐私保护。其中之一是对外部存储的访问限制。如果APP的target>30,之前的WRITE_EXTERNAL_STORAGE/READ_EXTERNAL_STORAGE授权方案就完全不能使用了。本文将说明如何在 …

实战攻防:蜜罐无关,溯源有术

前言 突然接到通知,甲方在HVV防守前突然收到内网IP地址出现Socks代理通信,审计流量发现确实属于socks流量,不属于告警流量,告警地址为个人终端,直接准入工具阻断等待排查。 态感告警 流量分析属于正常的socks流量。 …

【leetcode--O(1) 时间插入、删除和获取随机元素】

这道题要求实现一个类,满足插入、删除和获取随机元素操作的平均时间复杂度为 O(1)。 变长数组可以在 O(1) 的时间内完成获取随机元素操作,但是由于无法在 O(1)的时间内判断元素是否存在,因此不能在 O(1) 的时间内完成插入和删除操作。哈希表…

unify llm 大模型路由

Unify介绍 Unify是llm大模型路由框架。 Unify Python 包提供了对 Unify REST API 的访问,允许您从任何 Python 3.7.1 应用程序中查询大型语言模型(LLMs)。它包括了同步和异步客户端,并支持流式响应。 就像 REST API 一样&#…

【光伏预测】基于BP神经网络实现光伏发电功率预测附Matlab代码

matlab % 步骤1:加载光伏发电功率数据 load(‘solar_power_data.mat’); % 假设数据存储在变量power_data中 % 步骤2:数据预处理 % 将数据归一化到[-1, 1]的范围 minPower min(power_data); maxPower max(power_data); normalizedData (power_data …

职场思考-职场第三年规划重点(14)

(职场第三年规划重点(上)) 确定方向,拉进关系,提高思维 好的职业生涯规划必须具备以下三个特点: 合理性(以当事人的天赋、性格和现有知识与技能为基础,是适合并为当事人所接受的)、可…

根据用户显式内容——静态web网站与动态web网站

根据用户显式变化的内容 就像企业的Web网站一样,无论浏览网站的用户是谁,在什么时候访问,总是显式相同内容,这样的网站被称为静态Web网站;与此相对,用户发帖,不同人登录后显式不同内容的网站被称为…

vscode 如何debug(二)

在 Python 项目中配置 VS Code 进行远程调试是一个常见的需求。以下是详细的步骤,确保你可以顺利配置并进行调试: 1. 安装 DebugPy 首先,通过 pip 安装 debugpy: pip install debugpy -U2. 安装 VS Code 插件 确保你已经在 VS…

word-简历排版

1、确认字体(微软雅黑)、字号(五号/小五) 2、设置段间距和行间距、页边距 3、突出各模块标题,增加分格线 4、使用制表位进行对齐:视图-标尺,制表符(tab)和制表位共同使…

西贝柳斯终极版2023:Mac上的简易音乐记谱神器,谱写未来

Avid Sibelius Ultimate 2023 for Mac是一款专为Mac用户设计的音乐记谱软件,它以其强大的功能和直观的操作界面,为音乐创作者们提供了一个高效、便捷的创作平台。 一、音乐创作的得力助手 Sibelius Ultimate 2023不仅适用于有抱负的作曲家和词曲作者&a…

# Java 基础面试300题 (51-80)

Java 基础面试300题 (51-80) 051.Java中有那几种循环结构? 循环结构也被称为迭代语句,用于重复执行代码块。Java具有以下几种循环结构: while循环: while语句检查条件,只要条件为真,就会重复…

Python | 武理刷题2

1.文件打开方式 只读模式r 追加写模式a 覆盖写模式w 2. matplotlib绘制 散点图:scatter() 饼图 pie() 直方图:bar() 编程题: 3. 有五个数字:1、2、3、4、5,输出由这五个数字组成的所有互不相同且无重复数字的三位数 #有五个…

计算机网络学习记录 网络层 Day4(上)

计算机网络学习记录 网络层 Day4 (上) 你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner gitee https://gitee.com/Qiuner 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f60…

122. 买卖股票的最佳时机 II(中等)

122. 买卖股票的最佳时机 II 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:122. 买卖股票的最佳时机 II 2.详细题解 实现最大的利润,即只要有盈利就收入囊中,由于交易没有具体限制次数,因此可以依…

再论Web应用在医学研究中构建数据收集问卷(stremlit_survey包体验)

再论Web应用在医学研究中构建数据收集问卷(Streamlit_survey包体验) 概述 医学队列研究是临床研究的重要形式,这种研究通过收集临床诊疗过程中产生的数据而阐述疾病相关的因素。在临床数据收集过程中,Web APP体现出了一定的优势…

计算机毕业设计 | SpringBoot图书管理系统(附源码)

1, 概述 1.1 课题背景 开发一个学生成绩管理系统,采用计算机对学生成绩进行处理,进一步提高了办学效益和现代化水平。为广大教师和学生提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化。现在我国中学的学生…

YOLOv8_obb训练流程-原理解析[旋转目标检测理论篇]

在旋转目标检测网络中,换了个顺序,先把训练流程捋一遍,然后再取捋一下测试的流程。由下图的YOLOv8l_obb网络结构图可以看到相对于目标检测网络,旋转目标检测网络只是在Head层不相同,在每个尺度特征层中增加了Angle分支(浅蓝色),通过两个卷积组和一个Conv卷积得到得到通…