【问题标题】:How to shutdown NLog logging in an Azure Function?如何关闭 Azure 函数中的 NLog 日志记录?
【发布时间】:2020-08-18 20:37:33
【问题描述】:

当 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 关闭我的程序集的实例。

Azure 是否公开了某种我没有看到的 Dispose 事件?

【问题讨论】:

标签: c# azure azure-functions nlog


【解决方案1】:

看起来您依赖于 Microsoft 扩展日志记录,所以我可能会使用它的生命周期逻辑(禁用 AutoShutdown 并启用 ShutdownOnDispose

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 });
        });
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2018-02-27
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多