Настроить пользовательские параметры столбцов для Serilog Sinks MsSqlServer в AppSettings. json не работает - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь определить, можно ли настроить параметры столбца для раковины serilog mssqlserver в файле appsettings.json для проекта ASP. Net Core 3.

, кроме отсутствия заполнения Пользовательские столбцы, база данных также создается стандартным способом без этих столбцов, поэтому я добавил их вручную. Это может указывать на проблему конфигурации?

SQL для создания таблицы

    CREATE TABLE [dbo].[logtable](
        [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,
        [Controller_Name] [varchar](500) NULL,
        [Method_Name] [varchar](500) NULL,
        [StackTrace] [varchar](500) NULL
    )

Я создаю и настраиваю регистратор в файле Program.cs.


    public static IWebHost BuildWebHost(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseStartup<Startup>()
                    .UseSerilog()
                    .Build();

    Log.Logger = new LoggerConfiguration()
                        .ReadFrom.Configuration(configuration)
                        .CreateLogger();

Я могу создать конфигурацию файл из файла appsettings.json, который содержит узел Serilog с информацией о том, какую строку подключения и таблицу использовать.

"Serilog": {
    "Using": [ "Serilog.Sinks.MSSqlServer" ],
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "Data Source=SWPC159; Initial Catalog=master;Trusted_Connection=True;", // connection String
          "tableName": "logtable",
          "columnOptionsSection": {
            "disableTriggers": true,
            "clusteredColumnstoreIndex": false,
            "addStandardColumns": [ "LogEvent" ],
            "removeStandardColumns": [ "MessageTemplate", "Properties" ],
            "additionalColumns": [
              {
                "ColumnName": "Controller_Name",
                "DataType": "varchar",
                "AllowNull": true,
                "DataLength": 500
              },
              {
                "ColumnName": "Method_Name",
                "DataType": "varchar",
                "AllowNull": true,
                "DataLength": 500
              },
              {
                "ColumnName": "StackTrace",
                "DataType": "varchar",
                "AllowNull": true,
                "DataLength": 500
              }
            ]
          }
        }
      }
    ]
  }

1 Ответ

0 голосов
/ 27 февраля 2020

Замена конфигурации контекстом хостинга, решение проблем

public static IWebHost BuildWebHost(string[] args)
        {
            return WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration.ReadFrom
            .Configuration(hostingContext.Configuration))
            .Build();
        }
...