跳转到主内容
极星编程网:以代码为星,赴技术山海!

NLog.config是什么 如何用它来配置.NET的日志记录

NLog.config 是 XML 格式配置文件,用于声明式配置 NLog;需命名为 NLog.config、Build Action 为 Content、Copy to Output Directory 为 Copy always/if newer,包含 和 ,支持热重载与易维护。
NLog.config
是一个 XML 格式的 配置文件 ,用于在 .NET 应用中声明式地配置
NLog
日志框架的行为——它不是代码,但能替代大部分手动调用
LogConfiguration
API 的工作。 为什么用
NLog.config
而不是代码配置? 直接写 XML 配置更易维护、无需重新编译、支持热重载(配合
keepFileOpen="false"
和
autoReload="true"
),也方便运维人员调整日志级别或输出路径。但前提是:文件名必须是
NLog.config
,且
Build Action
设为
Content
,
Copy to Output Directory
设为
Copy always
或
Copy if newer
。
NLog.config
的基本结构长什么样? 最小可用配置包含
(输出目的地)和
(日志 路由 逻辑)。以下是一个典型示例:
注意几个关键点: php版微信js-sdk支付接口类 php版微信js-sdk支付接口类 下载
autoReload="true"
表示运行时修改文件后自动生效(需确保文件未被其他进程独占锁定)
throwConfigExceptions="true"
有助于快速发现 XML 语法错误或路径不可写等问题
${basedir}
是运行目录,不是项目根目录;若要写入程序同级
logs
文件夹,必须存在该目录,否则日志会静默失败
中的
*
是通配符,匹配所有 logger 名称(如
LogManager.GetLogger("UserService")
) 常见错误:日志没生成、控制台没输出、文件权限拒绝 这些往往不是 NLog 本身的问题,而是配置细节或环境导致的静默失败: 日志文件路径含非法字符(如
在 XML 中需写成
\
或用正斜杠
/
) 目标文件夹不存在,且 NLog 默认不会自动创建多级目录(需加
createDirs="true"
到
) ASP.NET Core 中未正确初始化:需在
Program.cs
开头调用
LogManager.LoadConfiguration("NLog.config")
,否则默认走空配置 使用
Microsoft.Extensions.Logging
集成时,
NLog.config
仍有效,但
ILogger
的日志级别受
appsettings.json
中
"Logging:LogLevel:Default"
影响,可能过滤掉低级别日志 最常被忽略的是:NLog 不报错也不写日志,常常是因为目标路径不可写,或
NLog.config
没复制到输出目录。建议首次调试时启用内部日志:
nlog internalLogFile="nlog-internal.log"
,它会告诉你到底卡在哪一步。

相关文章