NLog 用于 C# (.NET):完整指南及示例
\n\n欢迎阅读适用于 .NET 平台的 NLog 库详细指南。NLog 是一个强大、灵活且高性能的日志记录系统,已成为许多 .NET 项目的实际标准。在本文中,我们将涵盖从安装到高级技术的所有内容,并提供真实的代码示例和优化建议。
\n\n1. 什么是 NLog,为什么需要它?
\n\nNLog(“.NET Logging”的缩写)是一个面向 .NET 平台的开源免费库,旨在实现灵活且高效的日志记录。它允许开发者将诊断信息(日志)写入各种目标位置:文件、控制台、数据库、网络套接字、监控系统(例如 Seq、Elasticsearch、Sentry)以及许多其他位置。
\n\n为什么需要日志记录?在现代软件开发中,日志是应用程序的“黑匣子”。没有它们,就无法理解服务器为何崩溃、错误发生在何处、故障时正在处理哪些数据。NLog 通过提供以下功能解决了这个问题:
\n- \n
- 路由灵活性:可以为应用程序的不同部分配置不同的日志级别(Trace、Debug、Info、Warn、Error、Fatal)。 \n
- 高性能:异步写入、延迟初始化,对运行速度影响极小。 \n
- 可扩展性:数百个现成的目标(targets),并且可以编写自定义目标。 \n
- 无需重新编译即可配置:可以通过 XML、JSON 或代码实时更改设置。 \n
NLog 非常适合:Web 应用程序(ASP.NET Core)、控制台工具、微服务、桌面应用程序(WPF/WinForms)以及后台服务(Windows Services、Worker Services)。
\n\n2. 安装
\n\n通过 NuGet 包管理器安装 NLog。在 Visual Studio 的包管理器控制台或 .NET CLI 终端中执行以下任一命令:
\n\n// 通过 .NET CLI(推荐)\ndotnet add package NLog\n\n// 通过包管理器控制台\nInstall-Package NLog\n\n// 对于 ASP.NET Core,还建议安装集成包:\ndotnet add package NLog.Web.AspNetCore\n\n安装后,您需要在项目根目录中创建一个配置文件 nlog.config(或通过代码配置 NLog)。
3. 快速入门——最小工作示例
\n\n创建一个控制台应用程序,并添加 nlog.config 文件(右键单击项目 → 添加 → 新建项 → XML 文件 → 命名为 nlog.config)。在其中粘贴以下内容:
<?xml version="1.0" encoding="utf-8" ?>\n<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"\n xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n\n <!-- 目标:日志写入位置 -->\n <targets>\n <target name="console" xsi:type="Console" layout="${longdate} | ${level:uppercase=true} | ${message} ${exception:format=ToString}" />\n <target name="file" xsi:type="File" fileName="${basedir}/logs/app-${shortdate}.log"\n layout="${longdate} | ${level:uppercase=true} | ${logger} | ${message} ${exception:format=ToString}" />\n </targets>\n\n <!-- 路由规则 -->\n <rules>\n <logger name="*" minlevel="Debug" writeTo="console,file" />\n </rules>\n</nlog>\n\n现在,在 Program.cs 中编写代码:
using NLog;\n\npublic class Program\n{\n // 为当前类创建日志记录器\n private static readonly Logger Logger = LogManager.GetCurrentClassLogger();\n\n public static void Main(string[] args)\n {\n Logger.Info("应用程序已启动");\n \n try\n {\n