C# Winform NLog的使用笔记

一、NLog的介绍

  NLog是一个开源的、灵活的、可扩展的日志记录库,用于.NET平台。它提供了强大的日志记录功能,可以帮助开发人员在应用程序中实现高效的日志记录和跟踪。它提供了一种简单且灵活的方式来在应用程序中记录日志信息。NLog支持多种日志目标(如文件、数据库、网络等),并且可以根据需要进行配置和扩展。它具有高性能和低内存消耗的特点,并且可以通过配置文件或代码进行灵活的日志记录设置。NLog还支持日志级别、日志过滤、日志格式化等功能,使开发人员能够根据实际需求对日志进行管理和分析。以下是NLog的一些特点和功能:

  1. 灵活性:NLog支持多种日志记录目标,包括文件、数据库、网络、控制台等。它还支持多种日志格式,如文本、XML、JSON等,可以根据需求进行配置。
  2. 可扩展性:NLog提供了丰富的扩展点和插件机制,可以轻松地集成到各种应用程序中。开发人员可以根据需要编写自定义的目标、过滤器和布局器。
  3. 高性能:NLog经过优化,具有出色的性能表现。它使用异步日志记录和缓冲区技术,可以最大程度地减少对应用程序性能的影响。
  4. 配置简单:NLog的配置文件采用XML格式,易于理解和修改。开发人员可以通过配置文件来定义日志记录规则、目标和格式,而无需修改代码。
  5. 跨平台支持:NLog不仅支持.NET Framework,还支持.NET Core和Mono等跨平台框架,可以在不同的操作系统上运行。
  6. 强大的过滤和路由功能:NLog提供了灵活的过滤器和路由规则,可以根据日志消息的级别、来源、内容等进行过滤和路由,以便将日志记录发送到不同的目标。
      总之,NLog是一个功能强大、易于使用和高性能的日志记录库,适用于各种.NET应用程序的日志记录需求。

二、NLog的安装

  使用NuGet包管理工具进行安装,安装步骤如下:


三、NLog的配置

工程根目录下新建NLog配置文件 NLog.config

配置文件如下

复制代码
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

	<targets>
		<!--此部分中的所有目标将自动异步-->
		<target name="asyncFile" xsi:type="AsyncWrapper">
			<!--项目日志保存文件路径说明fileName="${basedir}/保存目录,以年月日的格式创建/${shortdate}/${记录器名称}-${单级记录}-${shortdate}.txt"-->
			<target name="log_file" xsi:type="File"
					fileName="${basedir}/ProjectLogs/${shortdate}/${logger}-${level}-${shortdate}.txt"
					layout="${longdate} | ${message} ${onexception:${exception:format=message} ${newline} ${stacktrace} ${newline}"
					archiveFileName="${basedir}/archives/${logger}-${level}-${shortdate}-{#####}.txt"
					archiveAboveSize="102400"
					archiveNumbering="Sequence"
					concurrentWrites="true"
					keepFileOpen="false" />
		</target>
		<!--使用可自定义的着色将日志消息写入控制台-->
		<target name="colorConsole" xsi:type="ColoredConsole" layout="[${date:format=HH\:mm\:ss}]:${message} ${exception:format=message}" />
	</targets>

	<!--规则配置,final - 最终规则匹配后不处理任何规则-->
	<rules>
		<logger name="Microsoft.*" minlevel="Info" writeTo="" final="true" />
		<logger name="*" minlevel="Info" writeTo="asyncFile" />
		<logger name="*" minlevel="Warn" writeTo="colorConsole" />
	</rules>
</nlog>

四、NLog的使用

测试代码:

复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using myLoggerHelper;
using NLog;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        private readonly NLog.Logger logTest= LogManager.GetCurrentClassLogger();
        
        public Form1()
        {
            InitializeComponent();
            testLoge();
        }
        //test
        private void testLoge()
        {
        	//
            logTest.Debug("haha-2");
            logTest.Info("haha-2");
            logTest.Warn("haha-2");
            logTest.Error("haha-2");
            //
            Logger logTest2 = LogManager.GetLogger("log");
            logTest2.Debug("haha-3");
            logTest2.Info("haha-3");
            logTest2.Warn("haha-3");
            logTest2.Error("haha-3");



        }
    }
}


参考
链接1
链接2

相关推荐
库玛西7 小时前
哈夫曼树与前缀编码:数据压缩的贪心核心
c语言·c++·笔记·考研
Rabitebla8 小时前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法
库玛西9 小时前
数据结构与算法之美:树、森林与二叉树全解析
c语言·数据结构·笔记·考研·算法·学习方法
点纭9 小时前
C 语言 第七章 常用函数(3)
c语言·开发语言·算法·oracle·c#
用户7884773163410 小时前
用 .NET MAUI 一套 C# 同时出 Windows 和 Android:哪些是真能共享,哪些是 marketing
c#
小李不想当小白10 小时前
PCB结构与组成(PCB设计入门学习笔记)
经验分享·笔记·单片机·嵌入式硬件·学习·pcb工艺·pcb
hanlin0311 小时前
刷题笔记:力扣第76题-最小覆盖子串
笔记·算法·leetcode
hengmeida11 小时前
楼宇控制柜标准化项目交付完整规范
大数据·网络·笔记
蒸蒸yyyyzwd11 小时前
cpp 选手秋招学习笔记 day40
笔记·八股
有范先生11 小时前
速食米饭:如何避开闷味、干硬的速食主食
笔记