2017-03-24 3 views
0

Ich versuche SeriLog-Einstellungen wie Log-Mindest-Level und Rolling-Dateipfad aus einer Konfigurationsdatei hinzuzufügen. Der Standard ist hart zu codieren sie wie folgt aus:Zugriff auf AppSettings im Startup-Klassenkonstruktor in .NET Core

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

Grundsätzlich, ich brauche Konstruktor zugreifen können Werte von appsettings.json im Startup. Etwas wie folgt aus:

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

Ich fand die Configuration.GetValue Syntax in einem anderen SO posten, aber es gibt immer null.

+0

Was macht Ihr appsettings.json aussehen? –

Antwort

1

wenn AppSettings Abschnitt ist wie folgt:

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

dann . ändern :

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

oder benutzen Sie diese ein

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

Doh. Ich hatte das zuerst versucht, aber ich glaube, ich benutzte eine Periode statt eines Doppelpunktes. Vielen Dank! – im1dermike

0

Meine appsettings.json wie folgt aussieht:

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

Um einen Wert greife ich nur so etwas wie diese verwenden:

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