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

相关推荐
钰fly1 天前
C#异常处理 递归算法
c#
ejjdhdjdjdjdjjsl1 天前
JSON序列化与反序列化实战指南
数据库·microsoft·c#
virtual_k1smet1 天前
梧桐·鸿鹄- 大数据assistant-level
大数据·笔记
星轨初途1 天前
郑州轻工业大学2025天梯赛解题
c++·经验分享·笔记·算法·链表·剪枝
阿波罗8号1 天前
《一本书读懂支付》
笔记
顽强卖力1 天前
第二章:什么是数据分析师?
笔记·python·职场和发展·学习方法
北岛寒沫1 天前
北京大学国家发展研究院 经济学辅修 经济学原理课程笔记(第十五章 劳动力市场)
经验分享·笔记·学习
丝斯20111 天前
AI学习笔记整理(37)——自然语言处理的基本任务
人工智能·笔记·学习
Macbethad1 天前
区块链技术在分布式系统中的应用实践技术报告
开发语言·c#
代码游侠1 天前
复习——网络基础知识
网络·笔记·网络协议·算法·http