[英]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.