Я новичок в Serilog и пытаюсь настроить ведение журнала на SQL Server.Мой Program.cs
выглядит следующим образом ...
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Serilog;
namespace MyWeb {
public class Program {
public static void Main(string[] args) =>
CreateWebHostBuilder(args).Build().Run();
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSerilog((context, config) => {
config.ReadFrom.Configuration(context.Configuration);
})
.UseStartup<Startup>();
}
}
... и раздел Serilog в appSettings.json выглядит следующим образом ...
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Error",
"System": "Error"
}
},
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "myconnstr",
"tableName": "Logs"
}
}
]
},
Раздел в appSettings.Development.json выглядит следующим образом ...
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Fatal",
"System": "Fatal"
}
},
"WriteTo": [
{
"Name": "Debug"
},
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Data Source=.;Initial Catalog=MyWebDb;Trusted_Connection=True;MultipleActiveResultSets=true",
"tableName": "Logs"
}
}
]
}
Я вручную создал таблицу Logs
с этим SQL ...
CREATE TABLE [Logs] (
[Id] int IDENTITY(1,1) NOT NULL,
[Message] nvarchar(max) NULL,
[MessageTemplate] nvarchar(max) NULL,
[Level] nvarchar(128) NULL,
[TimeStamp] datetimeoffset(7) NOT NULL,
[Exception] nvarchar(max) NULL,
[Properties] xml NULL,
[LogEvent] nvarchar(max) NULL
CONSTRAINT [PK_Log] PRIMARY KEY CLUSTERED ([Id] ASC)
)
Когда я запускаю веб-сайт в VS сПриведенные выше настройки, логирование работает отлично.Если я изменяю строку подключения в appSettings.Development.json на строку производственного подключения, а затем запускаюсь в VS, все работает нормально, исключений нет, но ничего не записывается в таблицу журналов производственной базы данных.
Я попытался скопировать код из этого SO-ответа и попробовал совет в этого SO-ответа , но результат всегда был одинаковым.Когда я использую локальную строку подключения, она работает нормально, если я использую рабочую строку, ничего не регистрируется.
Я использую ту же строку подключения для Serilog, что и для остальной части сайта, и вседругой доступ к базе данных работает нормально, так что это не похоже на проблему с разрешениями.
Кто-нибудь есть идеи, что я делаю неправильно?Спасибо
Я использую версии ASP.NET Core 2.2 и Serilog следующим образом ...
- Serilog.AspNetCore Версия 2.1.1
- Serilog.Settings.Версия конфигурации 3.1.0
- Serilog.Sinks.File Версия 4.0.0
- Serilog.Sinks.MSSqlServer Версия 5.1.2