如何关闭 Azure 函数中的 NLog 日志记录?
How to shutdown NLog logging in an Azure Function?
我需要在 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 事件?
看起来你依赖于 Microsoft 扩展日志记录,所以我可能会连接到它的 lifetime-logic(禁用 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 });
});
}
}
我需要在 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 事件?
看起来你依赖于 Microsoft 扩展日志记录,所以我可能会连接到它的 lifetime-logic(禁用 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 });
});
}
}