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

升级至NLog 5.0:配置未生效问题排查

NLog 5.x 替代过时的LogFactory(LoggingConfiguration)构造函数的正确方式

你遗漏的关键步骤是将创建好的LoggingConfiguration实例赋值给LogFactory.Configuration属性——原来的过时构造函数内部自动完成了这个绑定操作,而新的写法需要手动执行这一步。

修正后的测试代码

[Test]
public void CustomLogFactoryShouldBehaveCompletelyIndependent()
{
    var memoryTarget4 = new MemoryTarget();
    memoryTarget4.Layout = "${level}|${logger}|${message}${exception}";
    var memoryTarget5 = new MemoryTarget();

    using (var customFactory = new LogFactory())
    {
        var customConfig = new LoggingConfiguration(customFactory);
        customConfig.AddTarget("UnitTestLogger4", memoryTarget4);
        customConfig.LoggingRules.Add(new LoggingRule("UnitTestLogger4", LogLevel.Trace, memoryTarget4));
        customConfig.AddTarget("UnitTestLogger2", memoryTarget5);
        customConfig.LoggingRules.Add(new LoggingRule("UnitTestLogger2", LogLevel.Info, memoryTarget5));
        
        // 关键:将配置绑定到LogFactory,使其生效
        customFactory.Configuration = customConfig;

        var logger4 = customFactory.GetLogger("UnitTestLogger4");
        logger4.Trace("Test4");
        Assert.That(memoryTarget4.Logs.Count, Is.EqualTo(1));
        Assert.That(memoryTarget5.Logs, Is.Empty);
        memoryTarget4.Logs.Clear();

        //... 其他测试逻辑
    }
}

补充说明

  • new LoggingConfiguration(customFactory)只是建立了配置与LogFactory的关联关系,但不会自动让LogFactory启用该配置,必须通过Configuration属性赋值完成加载。
  • ReconfigExistingLoggers()的作用是刷新已创建的日志器的配置,它依赖于LogFactory已经有生效的配置,所以单独调用它无法解决配置未生效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:27:16