You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Windows Forms应用中NLog日志系统无法写入日志问题

解决NLog日志文件夹为空的问题

针对你遇到的Logs文件夹已生成但无日志文件的情况,按以下步骤排查:

1. 查看NLog内部日志

你的配置已开启内部日志(internalLogFile="nlog-internal.log"),直接去Debug目录找到该文件,里面会记录NLog初始化、目标创建、日志写入的详细错误信息,比如配置加载失败、路径无写入权限、规则匹配异常等,这是最直接的排查依据。

2. 确认NLog.config已复制到输出目录

  • 右键项目中的NLog.config文件 → 属性 → 确认“复制到输出目录”设置为“始终复制”
  • 手动前往bin/Debug目录,检查NLog.config是否存在,且内容和你编写的配置一致

3. 测试日志路径与权限

临时更换绝对路径测试

修改NLog.config里的fileName为绝对路径,比如:

fileName="C:/Temp/Logs/log_${shortdate}.txt"

运行应用后查看C:/Temp/Logs下是否生成日志,以此排除路径解析问题。

检查文件夹写入权限

手动在Debug/Logs文件夹中创建一个文本文件,若无法创建,说明应用对该文件夹无写入权限,需调整文件夹权限或更换日志存储路径。

4. 验证日志规则与级别

在代码中添加多级别测试日志,确认是否存在级别过滤问题:

logger.Trace("Trace级别测试日志");
logger.Debug("Debug级别测试日志");
logger.Info("Info级别测试日志");
logger.Warn("Warn级别测试日志");

你的规则设置为minlevel="Info",因此Info及以上级别日志应被写入,若仍无日志,需检查规则是否生效。

5. 检查NLog配置兼容性

部分配置属性可能随NLog版本变化:

  • 临时将archiveEvery="Week"改为archiveEvery="Day"测试,确认是否为归档配置导致的问题
  • 可将concurrentWrites="true"改为false,排除并发写入导致的异常

6. 验证Logger初始化

将代码中的Logger初始化改为显式命名:

private static readonly Logger logger = LogManager.GetLogger("LoginLogger");

同时在NLog.config的规则中添加:

<logger name="LoginLogger" minlevel="Info" writeTo="logfile" />

运行后查看是否生成日志,排除类名Logger的匹配问题。


内容的提问来源于stack exchange,提问作者Daryush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:53:11