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

.NET 4.5.2环境下NLog 4.7.11修改日志级别不生效问题咨询

问题原因

你修改完内存中的日志规则后,没有触发NLog的配置刷新操作,已经初始化的所有Logger实例仍然在使用加载配置时的旧规则,所以修改不会生效。

修复方案

在你的规则修改逻辑末尾,增加一行代码通知NLog刷新配置即可:

private void logLevelMenuStripItem_Click(object sender, EventArgs e)
{
    logLevelTraceMenuStripItem.Checked = false;
    logLevelInfoMenuStripItem.Checked = false;
    logLevelDebugMenuStripItem.Checked = false;
    logLevelWarnMenuStripItem.Checked = false;
    logLevelErrorMenuStripItem.Checked = false;

    ToolStripMenuItem source = sender as ToolStripMenuItem;

    source.Checked = true;
    LogLevel newLevel = LogLevel.FromString(source.Text);

    foreach (NLog.Config.LoggingRule rule in LogManager.Configuration.LoggingRules)
    {
        rule.SetLoggingLevels(newLevel, LogLevel.Fatal);
    }
    // 新增这行触发配置刷新
    LogManager.ReconfigExistingLoggers();
}

额外注意事项

  • 你当前的逻辑会修改所有日志规则的级别,包括原本配置为最小Debug级别的文件日志规则。如果你希望文件日志始终保留最低Debug级别的输出,仅修改控制台和界面RichTextBox的输出级别,可以在循环中增加判断,只修改writeTo包含logconsole和logwindow的规则即可。
  • 请确认菜单项的Text属性值和NLog日志级别枚举名完全匹配,支持大小写不敏感,但不可出现额外字符,如中文的“调试”“警告”等,否则FromString方法会抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:48:03