Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core Nlog-数据库目标延迟_Asp.net Core_Logging_Nlog_Asp.net Core 3.0 - Fatal编程技术网

Asp.net core Nlog-数据库目标延迟

Asp.net core Nlog-数据库目标延迟,asp.net-core,logging,nlog,asp.net-core-3.0,Asp.net Core,Logging,Nlog,Asp.net Core 3.0,我已经将nlog配置为将日志写入数据库,并使用配置布局抽屉从appsettings.json为主机提供连接字符串。但是在Startup.ConfigureServices和Startup.Configure中有一些日志调用。所以,当配置未就绪时,nlog此时会尝试写入数据库。它需要空主机配置仍然没有准备好!,在nlog自己的日志文件中,我看到由于主机为空而导致日志记录失败的错误 所以,问题是:在配置就绪之前,是否不登录到数据库目标 我猜问题是在加载MEL配置之前就开始使用NLog了 解决方案是执

我已经将nlog配置为将日志写入数据库,并使用配置布局抽屉从appsettings.json为主机提供连接字符串。但是在Startup.ConfigureServices和Startup.Configure中有一些日志调用。所以,当配置未就绪时,nlog此时会尝试写入数据库。它需要空主机配置仍然没有准备好!,在nlog自己的日志文件中,我看到由于主机为空而导致日志记录失败的错误


所以,问题是:在配置就绪之前,是否不登录到数据库目标

我猜问题是在加载MEL配置之前就开始使用NLog了

解决方案是执行早期加载并设置appsettings.json:

var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
    .AddEnvironmentVariables();

Configuration = builder.Build();

ConfigSettingLayoutRenderer.DefaultConfiguration = Configuration;

// Loads NLog.config one more time
var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
另见:

NLog 4.7.1和NLog.Web.AspNetCore版本。4.9.3将有可能做到这一点:

var logger = NLog.LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();

另请参见:

谢谢!但是我没有,我应该把你的代码粘贴到哪里。经过一些调查,我发现导致错误的日志消息是由AppMetrics。。。CreateWebHostBuilderargs.Build-在那里。跑因此,要执行代码,我应该在某个地方获取ENV值。我完成了在“.UseStartup”之后添加的操作:.ConfigureAppConfigurationhostingContext,config=>{ConfigSettingLayoutRenderer.DefaultConfiguration=config.Build;};在Program.cs中,CreateWebHostBuilderstring[]args