各位.NET道友大家好,我是.NET修仙日记的掌门人。“夫程序之道,日志为眼。NLog者,开天眼通九幽,照见五蕴皆空”,NLog与Serilog、log4net并称.NET修仙界三大日志法器。今天我们就来聊一聊这.NET修仙界三大日志法器之一的NLog。
第一章:基础修炼
1.1 安装NLog NuGet包

NLog NuGet包安装流程图
NLog组件安装指南:
| 组件名称 | 命令 | 适用场景 |
|---|---|---|
| NLog | dotnet add package NLog | 所有.NET项目 |
| NLog.Web.AspNetCore | dotnet add package NLog.Web.AspNetCore | ASP.NET Core项目 |
| NLog.Database | dotnet add package NLog.Database | 需要数据库日志 |
1.2 配置文件详解
<!-- NLog.config 核心结构 -->
<nlog>
<targets>
<!-- 输出目标定义 -->
<target name="console" type="ColoredConsole" />
<target name="file" type="File" fileName="logs/${shortdate}.log" />
</targets>
<rules>
<!-- 日志路由规则 -->
<logger name="*" minlevel="Debug" writeTo="console" />
<logger name="Microsoft.*" minlevel="Warning" writeTo="file" />
</rules>
</nlog>
NLog配置文件结构树
NLog
├── targets
│ ├── console [ColoredConsole]
│ ├── file [File]
│ └── database [Database]
└── rules
├── * → console (Debug+)
└── Microsoft.* → file (Warning+)
第二章:实战应用
2.1 日志级别使用指南

日志级别使用频率
日志级别对照表
| 级别 | 修仙比喻 | 使用场景 |
|---|---|---|
| Trace | 神识探查 | 最详细跟踪信息 |
| Debug | 内视经脉 | 调试信息 |
| Info | 日常修炼 | 重要业务流程 |
| Warn | 心魔预警 | 异常但不影响运行 |
| Error | 走火入魔 | 严重错误 |
| Fatal | 渡劫失败 | 导致系统崩溃的错误 |
2.2 结构化日志示例
// 传统日志
"用户12345登录失败"
// 结构化日志
{
"event": "用户登录",
"userId": "12345",
"result": "失败",
"reason": "密码错误",
"attempts": 3,
"ip": "192.168.1.100"
}
结构化日志与传统日志对比
第三章:高级配置
3.1 日志架构设计

日志架构设计流程图
3.2 性能优化方案
同步vs异步日志性能对比
| 指标 | 同步日志 | 异步日志 |
|---|---|---|
| 吞吐量 | 1000条/秒 | 10000+条/秒 |
| 响应时间 | 10-50ms | 1-5ms |
| CPU占用 | 高 | 低 |
| 可靠性 | 高 | 可能丢日志 |
<!-- 异步配置示例 -->
<targets>
<target name="asyncFile" xsi:type="AsyncWrapper"
queueLimit="10000" overflowAction="Discard">
<target xsi:type="File" fileName="logs/async.log" />
</target>
</targets>
终章:飞升心得
本座总结NLog修炼三重境界:
-
筑基期:掌握
基础配置与日志记录 -
金丹期:熟练使用
结构化日志和过滤规则 -
元婴期:实现自定义
Targets和LayoutRenderers
切记以下心法口诀:
日志级别要分明,
结构记录看得清。
异步写入性能高,
配置文件要细心。
愿诸位道友在.NET大道上,以NLog为伴,早登技术巅峰!如需更深层修炼,可参悟:
-
微信公众号【.NET修仙日记】

880

被折叠的 条评论
为什么被折叠?



