Описание конфигурационного файла 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 производится в специальном разделе Редактор настроек.
