如何解决如何关闭Azure功能中的NLog日志记录?
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 Extension Logging,所以我可能会陷入其生存期逻辑(禁用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 });
});
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。