Serilog с Asp.Net Core 2.1 не пишет из appsettings.json
Я пытаюсь настроить 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
0 ответов
Попробуйте это в своем файле Program.cs:
UseStartup<Startup>()
.UseSerilog()
.Build();
Это скажет HostBuilder использовать пакет Serilog.