各位.NET道友大家好,我是.NET修仙日记
的掌门人。“夫程序之道,日志为眼。NLog
者,开天眼通九幽,照见五蕴皆空”,NLog
与Serilog
、log4net
并称.NET修仙界三大日志法器。今天我们就来聊一聊这.NET修仙界三大日志法器之一的NLog
。
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 | 需要数据库日志 |
<!-- 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+)
日志级别使用频率
日志级别对照表
级别 | 修仙比喻 | 使用场景 |
---|---|---|
Trace | 神识探查 | 最详细跟踪信息 |
Debug | 内视经脉 | 调试信息 |
Info | 日常修炼 | 重要业务流程 |
Warn | 心魔预警 | 异常但不影响运行 |
Error | 走火入魔 | 严重错误 |
Fatal | 渡劫失败 | 导致系统崩溃的错误 |
// 传统日志
"用户12345登录失败"
// 结构化日志
{
"event": "用户登录",
"userId": "12345",
"result": "失败",
"reason": "密码错误",
"attempts": 3,
"ip": "192.168.1.100"
}
结构化日志与传统日志对比
日志架构设计流程图
同步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道友共参CLR天道玄机。修真之路漫漫,我们以代码为符,共绘仙途!