Я пытаюсь настроить Serilog
для чтения моих настроек из файла appsettings.json
в моем ASP.NET Core 2 WebApi.
У меня в корне файла appsetting.json
есть следующее:
"Serilog": {
"Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Async", "Serilog.Sinks.MSSqlServer" ],
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "File",
"Args": { "pathFormat": "Logs\\Serilog\\log.txt" },
"RollingInterval": "Day"
},
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "myconnectionstring",
"schemaName": "Schema",
"tableName": "Logs",
"batchPostingLimit": 1000,
"period": 30
}
}
]
}
}
]
}
В моем Startup.cs
есть следующее:
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var log = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
.CreateLogger();
loggerFactory.AddSerilog(log);
Если я запускаю следующее, вывод выводится идеально, так что я знаю, что все сводится к переходу к настройкам приложения;
var log = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.MSSqlServer("connectionString", "Logs", schemaName:"Schema")
.WriteTo.File("Logs\\Serilog\\log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
А потом в моем Program.cs
у меня есть;
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(config =>
config.AddJsonFile(
x =>
{
x.Path = "appsettings.json";
x.Optional = true;
x.ReloadOnChange = true;
})
.AddJsonFile(
x =>
{
x.Path = "appsettings.{currentEnv}.json";
x.Optional = true;
x.ReloadOnChange = true;
})
)
.UseStartup<Startup>()
.Build();
Отметим, что и appsettings.json, и среда, специфичная для среды, в настоящее время содержат одни и те же данные.
У меня установлены следующие версии Serilog;
Serilog 2.7.1
Serilog.spNetCore 2.1.1
Serilog.Enrichers.Environment 2.1.2
Serilog.Settings.Configuration 3.0.1
Serilog.Sinks.Async 1.3.0
Serilog.Sinks.File 4.0.0
Serilog.Sinks.MSSqlServer 5.1.2