【问题标题】:Dispose NLog in Azure Function在 Azure 函数中处理 NLog
【发布时间】:2020-08-25 03:37:39
【问题描述】:

我想在 Azure Functions 启动类中添加 NLog,如下所示:

public class Startup : FunctionsStartup {
    public Startup()
    {        
        var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
    }
    public override void Configure(IFunctionsHostBuilder builder) {
        ... other setup code
        builder.Services.AddLogging((loggingBuilder) =>
        {
            loggingBuilder.AddNLog();
        });
    }
}

根据 Nlog,您应该使用 NLog.LogManager.Shutdown() 手动关闭记录器。 Azure Function 中如何处理 NLog?

【问题讨论】:

    标签: c# azure azure-functions nlog


    【解决方案1】:

    如果我正确理解您的问题,您希望在 Azure Function 实例被处置时关闭 NLog。在这种情况下,您可以执行以下操作:

    public class Startup : FunctionsStartup {
        public Startup()
        {
            var logger = LogManager.Setup()
               .SetupExtensions(e => e.AutoLoadAssemblies(false))
               .LoadConfigurationFromFile("nlog.config", optional: false)
               .LoadConfiguration(builder => builder.LogFactory.AutoShutdown = false)
               .GetCurrentClassLogger();
        }
    
        public override void Configure(IFunctionsHostBuilder builder) {
            // other setup code
            builder.Services.AddLogging((loggingBuilder) =>
            {
                loggingBuilder.AddNLog(new NLogProviderOptions() { ShutdownOnDispose = true });
            });
        }
    }
    

    现在 NLog 将连接到 Microsoft 扩展日志记录的生命周期(禁用 AutoShutdown 并启用 ShutdownOnDispose

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2022-11-22
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多