Я использую:
- Asp. Net Core 2.2.0
- Serilog 2.9.0
- Serilog.AspNetCore 3.2.0
- Serilog.Sinks.MsSqlServer 5.1.3
Я настраиваю Serilog в appsettings.json
:
"Serilog": {
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=MyServer;Database=MyDatabase;Integrated Security=SSPI;",
"schemaName": "MySchema",
"tableName": "Log",
"autoCreateSqlTable": "true"
}
},
{
"Name": "File",
"Args": {
"path": ".\\Logs\\MyApp.log",
}
}
]
},
В моем Program.cs
:
var host = WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog((hostingContext, loggerConfiguration) =>
loggerConfiguration
.ReadFrom
.Configuration(hostingContext.Configuration))
.Build();
Log.Information("Starting application ...");
Я вижу этот начальный журнал, записанный как в файл, так и в базу данных.
Но последующие операторы Log.Information()
, выполненные в ходе обработки веб-запроса (точка входа Controller HttpPost
), записываются только в файл - не в базу данных.
В моем коде нет ничего, что могло бы изменить Serilog
config. Я не понимаю, почему первоначальный журнал будет записан в базу данных, но не последующий.
Я настроил собственный журнал
SelfLog.Enable(msg => Debug.WriteLine(msg));
, но Serilog не выдает никаких исключений (или, по крайней мере, это не запись их для отладки вывода).