簡體   English   中英

如何在.NET Core中的Startup類構造函數中訪問AppSettings

[英]How to access AppSettings in Startup class constructor in .NET Core

我正在嘗試添加SeriLog設置,例如來自配置文件的最小日志級別和滾動文件路徑。 標准是像這樣硬編碼:

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

    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Debug()
        .WriteTo.RollingFile("C:/LogFiles/log-{Date}.txt")
        .CreateLogger();
}

基本上,我需要能夠在Startup構造函數中訪問appsettings.json中的值。 像這樣的東西:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Is((LogEventLevel)Enum.Parse(typeof(LogEventLevel),
        Configuration.GetValue<string>("AppSettings.MinimumLoggingLevel")))
    .WriteTo.RollingFile(Configuration.GetValue<string>("AppSettings.RollingFilePath"))

我在另一個SO帖子中找到了Configuration.GetValue語法,但它總是返回null

如果AppSettings部分是這樣的:

"AppSettings": {
    "RollingFilePath": "..."
},

然后改變. :

.WriteTo.RollingFile(Configuration.GetValue<string>("AppSettings:RollingFilePath"))

或使用這個

.WriteTo.RollingFile(Configuration["AppSettings:RollingFilePath"])

我的appsettings.json看起來像這樣:

{
   "Logging": {
   "IncludeScopes": false,
   "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
      }
   }
}

要訪問一個值,我可以使用這樣的東西:

var IncludeScopes = Configuration.GetValue<bool>("Logging:IncludeScopes", true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM