2017-03-24 7 views
0

我想從配置文件中添加最小日誌級別和滾動文件路徑等SeriLog設置。該標準是他們難以像這樣的代碼:如何訪問.NET啓動類構造函數中的AppSettings核心

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(); 
} 

基本上,我需要能夠從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")) 

我發現Configuration.GetValue語法在另一個SO發佈,但它總是返回null

+0

什麼是您的appsettings.json樣子? –

回答

1

如果AppSettings部分是這樣的:

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

然後更改.:

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

或使用一個

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

Doh。我實際上已經嘗試過,但我相信我正在使用一段時間而不是冒號。謝謝! – im1dermike

0

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

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

要訪問的值,我可以只使用這樣的事情:

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