Expasys BI
Руководство пользователя (версия 2025.2)
×

Описание конфигурационного файла appsettings

 
Файл appsettings.json представляет собой глобальный конфигурационный файл, используемый для хранения параметров конфигурации, различных настроек, любых глобальных переменных области приложения.
Найти его можно в корневой директории и для открытия воспользоваться текстовым редактором (например, Блокнот).
 
Рассмотрим настройки доступные через редактирование файла appsettings.json:
 
  • Настройка "Kestrel" - представляет собой настройку веб-сервера Kestrel.
Ниже представлен пример настройки с комментариями:
 
"Kestrel": { // Настройки веб-сервера Kestrel
    "Endpoints": {
      "MyHttpEndpoint": {
        "Url": "http://*:5000" // Сервер будет слушать на всех сетевых интерфейсах на порту 5000
      }
    }
  },
 
  • Настройка "ConnectionStrings" - представляет собой настройку строк подключения к базе данных.
Ниже представлен пример настройки с комментариями:
 
"Kestrel": { // Настройки веб-сервера Kestrel
    "Endpoints": {
      "MyHttpEndpoint": {
        "Url": "http://*:5000" // Сервер будет слушать на всех сетевых интерфейсах на порту 5000
      }
    }
  },
 
  • Настройка "PostgreSqlAnalyticsString" - представляет собой шаблон строки подключения для аналитики в PostgreSQL.
Ниже представлен пример настройки с комментариями:
 
 "PostgreSqlAnalyticsString": "Server=[SERVER];Port=5432;Database=[DATABASE];User Id=[USER];Password=[PASSWORD];Search Path = [SCHEMA];", // Шаблон строки подключения для аналитики в PostgreSQL
 
  • Настройка "DataProtectionKey" - позволяет задать ключ для защиты данных.
Ниже представлен пример настройки с комментариями:
 
"DataProtectionKey": "69d631616ce94dd3b13f40ff5ba34718", // Ключ для защиты данных, например, для шифрования cookie и прочих данных
 
  • Настройка "ViewMode" - позволяет задать режим отображения данных.
Ниже представлен пример настройки с комментариями:
 
"ViewMode": "B-Data,copp", // Режим отображения данных, конкретное использование зависит от логики приложения
 
  • Настройка "EnableClustering" - представляет собой настройку кластеризации.
Ниже представлен пример настройки с комментариями:
 
"EnableClustering": false, // Включает или отключает кластеризацию (например, для масштабируемости приложения)
 
  • Настройка "Logging" - представляет собой настройку логирования приложения.
Ниже представлен пример настройки с комментариями:
 
"Logging": { // Настройки логирования приложения
    "IncludeScopes": false, // Включение или отключение логических областей в логах
    "LogLevel": {
      "Default": "Information", // Уровень логирования по умолчанию (информационный)
      "System": "Information", // Уровень логирования для системных сообщений
      "Microsoft": "Information", // Уровень логирования для сообщений от Microsoft
      "Microsoft.EntityFrameworkCore.Database.Command": "Information" // Уровень логирования для команд Entity Framework Core
    }
  },
 
  • Настройка "EnableCodeAuthorization" - позволяет включать или отключать авторизацию через код безопасности.
Ниже представлен пример настройки с комментариями:
 
"EnableCodeAuthorization": false, // Включает или отключает авторизацию через код безопасности
 
  • Настройка "SecurityCodeGeneratorOptions" - представляет собой настройку генерации кодов безопасности.
Ниже представлен пример настройки с комментариями:
 
 "SecurityCodeGeneratorOptions": { // Настройки генерации кодов безопасности
    "SecurityCodeLength": "6", // Длина кода безопасности
    "CharsCount": "6", // Количество символов в коде
    "UtfCharsStart": "65", // Начальный UTF символ (65 - 'A')
    "UtfCharsEnd": "90" // Конечный UTF символ (90 - 'Z')
  },
 
  • Настройка "CookieDomain" - представляет собой настройку домена для установки cookie.
Ниже представлен пример настройки с комментариями:
 
"CookieDomain": "", // Домен для установки cookie (пустое значение означает, что используется домен приложения)
 
  • Настройка "CookieName" - позволяет задать имя cookie.
Ниже представлен пример настройки с комментариями:
 
"CookieName": "", // Имя cookie (если не указано, будет использоваться значение по умолчанию)
 
  • Настройка "FolderSettings" - представляет собой настройку настройку для папок приложения.
Ниже представлен пример настройки с комментариями:
 
"FolderSettings": { // Настройки для папок приложения
    "UseAnotherContentDirectory": false, // Использовать ли другую директорию для контента
    "DirectoryPath": "C:\\TestDirectory" // Путь к директории, которая будет использоваться
  },
 
  • Настройка "ProxySettings" - представляет собой настройку прокси-сервера.
Ниже представлен пример настройки с комментариями:
 
 "ProxySettings": { // Настройки прокси-сервера
    "UseProxy": false, // Использовать ли прокси
    "ForwardLimit": 1, // Лимит пересылок через прокси
    "Proxies": [ "" ] // Список разрешённых прокси-серверов (пусто, значит нет ограничений)
  },
 
 
  • Настройка "Serilog" - представляет собой настройки логирования через Serilog.
Ниже представлен пример настройки с комментариями:
 
"Serilog": { // Настройки для логирования через Serilog
    "Using": [
      "Serilog.Sinks.PostgreSQL.Configuration", // Использовать логирование в PostgreSQL
      "Serilog.Sinks.File", // Логирование в файл
      "Serilog.Enrichers.ClientInfo" // Добавление информации о клиенте в логи
    ],
    "MinimumLevel": {
      "Default": "Information", // Минимальный уровень логирования по умолчанию
      "Override": {
        "Microsoft": "Error", // Переопределение уровня логирования для сообщений Microsoft (только ошибки)
        "Microsoft.Hosting.Lifetime": "Error" // Ошибки при запуске и остановке хостинга
      }
    },
    "Enrich": [ // Добавление дополнительных данных в логи
      "WithMachineName", // Имя машины, на которой работает приложение
      "WithClientIp", // IP-адрес клиента
      {
        "Name": "WithRequestHeader", // Добавление заголовка User-Agent в логи
        "Args": {
          "headerName": "User-Agent"
        }
      }
    ],
    "WriteTo": [ // Куда писать логи
      {
        "Name": "Console", // Логирование в консоль
        "Args": {
          "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console", // Тема для консоли
          "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} <s:{SourceContext}>{NewLine}{Exception}" // Шаблон вывода логов в консоль
        }
      },
      {
        "Name": "PostgreSQL", // Логирование в базу данных PostgreSQL
        "Args": {
          "connectionString": "DefaultConnection", // Строка подключения
          "tableName": "EventLogs", // Имя таблицы для логов
          "needAutoCreateTable": true // Автоматическое создание таблицы, если она отсутствует
        }
      },
      {
        "Name": "File", // Логирование в файл
        "Args": {
          "path": "logs/log-.txt", // Путь к файлу логов
          "rollingInterval": "Day", // Интервал ротации логов (раз в день)
          "outputTemplate": "{NewLine}{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}]{NewLine}{Message:lj}{NewLine}{Exception}Properties: {Properties}{NewLine}", // Шаблон логов для файла
          "fileSizeLimitBytes": 209715200, // Лимит размера файла логов (200 MB)
          "retainedFileCountLimit": 15, // Количество файлов логов, которые сохраняются
          "shared": true // Разделение файла логов между несколькими процессами
        }
      }
    ]
  },
 
  • Настройка "Columns" - представляет собой настройки колонок для записи в PostgreSQL.
Ниже представлен пример настройки с комментариями:
 
 "Columns": { // Настройки колонок для записи в PostgreSQL
    "Message": "RenderedMessageColumnWriter", // Колонка для рендеринга сообщения
    "MessageTemplate": "MessageTemplateColumnWriter", // Шаблон сообщения
    "Level": {
      "Name": "LevelColumnWriter", // Колонка для уровня логирования
      "Args": {
        "renderAsText": true, // Отображать уровень логирования в виде текста
        "dbType": "Varchar" // Тип данных в базе данных
      }
    },
    "Timestamp": "TimestampColumnWriter", // Колонка для времени логирования
    "Exception": "ExceptionColumnWriter", // Колонка для исключений
    "Properties": {
      "Name": "PropertiesColumnWriter", // Колонка для свойств
      "Args": {
        "dbType": "Json" // Формат хранения свойств — JSON
      }
    },
    "MachineName": {
      "Name": "SinglePropertyColumnWriter", // Колонка для имени машины
      "Args": {
        "propertyName": "MachineName", // Название свойства
        "writeMethod": "Raw" // Метод записи данных
      }
    }
  }
 
Редактирование конфигурационного файла appsettings.json производится в специальном разделе Редактор настроек.