Я пытаюсь добавить пользовательский столбец в мою базу данных журналов, однако я получаю исключение TargetInvocationException.
Это работало до того, как я добавил MSSqlServerSettingsSection
(то есть без пользовательского столбца), поэтому я, вероятно, что-то там упускаю.
Однако, глядя на пример на https://github.com/serilog/serilog-sinks-mssqlserver Я не могу понять, что мне нужно.
Настройки приемника MSSqlServer:
<MSSqlServerSettingsSection>
<Columns>
<add ColumnName="JobId"
DataType="nvarchar"
DataLength="256"
AllowNull="True"/>
</Columns>
</MSSqlServerSettingsSection>
приложение.config:
<configuration>
<configSections>
<section name="MSSqlServerSettingsSection" type="Serilog.Configuration.MSSqlServerConfigurationSection, Serilog.Sinks.MSSqlServer"/>
</configSections>
<MSSqlServerSettingsSection configSource="Configs\Shared.Serilog.MSSqlServerSettings.config" />
<appSettings>
<add key="serilog:using:MSSqlServer" value="Serilog.Sinks.MSSqlServer" />
<add key="serilog:write-to:MSSqlServer.connectionString" value="Server=127.0.0.1; Database=LogDB; User Id=Serilog; Password=Password123;" />
<add key="serilog:write-to:MSSqlServer.tableName" value="Logs" />
<add key="serilog:write-to:MSSqlServer.autoCreateSqlTable" value="false" />
<add key="serilog:write-to:MSSqlServer.restrictedToMinimumLevel" value="Verbose" />
</appSettings>
</configuration>
Запрос на создание:
CREATE TABLE [dbo].[Logs]
(
[Id] int IDENTITY(1,1) NOT NULL,
[Message] nvarchar(max) NULL,
[MessageTemplate] nvarchar(max) NULL,
[Level] nvarchar(128) NULL,
[TimeStamp] datetime NOT NULL,
[Exception] nvarchar(max) NULL,
[Properties] nvarchar(max) NULL,
[JobId] nvarchar(256) NULL
CONSTRAINT [PK_Logs] PRIMARY KEY CLUSTERED ([Id] ASC),
)
DI с использованием единицы:
container.RegisterInstance<ILogger>(new LoggerConfiguration()
.Enrich
.FromLogContext()
.ReadFrom
.AppSettings()
.CreateLogger());
Log.Logger = container.Resolve<ILogger>();
Я попытался отладить с помощью Selflog, но файл журнала пуст:
var file = File.CreateText("Self.log");
Serilog.Debugging.SelfLog.Enable(TextWriter.Synchronized(file));