Сервис логирования — различия между версиями
| [непроверенная версия] | [досмотренная версия] |
Aefremov (обсуждение | вклад) (Новая страница: «==Введение== Служба сервиса логирования нужна для сохранения логов, полученных в процесс…») |
Gavrilov (обсуждение | вклад) (→Настройка конфигурационного файла web.config) |
||
| (не показано 6 промежуточных версий 2 участников) | |||
| Строка 1: | Строка 1: | ||
| − | ==Введение== | + | ==Введение== |
| − | Служба сервиса логирования | + | Служба сервиса логирования LogService предназначена для централизованного приёма и хранения логов от клиентских приложений. Она принимает данные по HTTP и сохраняет их в MongoDB, автоматически создавая коллекции и управляя сроком хранения. |
| − | ==Предусловия установки== | + | |
| − | Служба LogService должна устанавливаться на компьютере, имеющем доступ к серверу | + | ==Предусловия установки== |
| + | Служба LogService должна устанавливаться на компьютере, имеющем доступ к серверу базы данных MongoDB, или на компьютере, который сам является сервером базы данных. | ||
| + | |||
==Установка службы сервиса логирования== | ==Установка службы сервиса логирования== | ||
| − | * Скопировать папку ''LogService'' из дистрибутива на сервер. | + | * Скопировать папку ''LogService'' из дистрибутива на сервер. |
* Перед установкой службы сервиса логирования необходимо настроить конфигурационный файл ''appsettings.json''. | * Перед установкой службы сервиса логирования необходимо настроить конфигурационный файл ''appsettings.json''. | ||
| + | ==Настройка конфигурационного файла appsettings.json== | ||
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" | ||
|- style="background-color:#F2F2F2" | |- style="background-color:#F2F2F2" | ||
| Строка 16: | Строка 19: | ||
|- style="vertical-align:text-top" | |- style="vertical-align:text-top" | ||
| − | |||
| 1 | | 1 | ||
| Название службы | | Название службы | ||
| Строка 25: | Строка 27: | ||
|- style="vertical-align:text-top" | |- style="vertical-align:text-top" | ||
| − | |||
| 2 | | 2 | ||
| − | | Адрес | + | | Адрес службы |
| − | | Адрес | + | | Адрес, на который поступают входящие HTTP-запросы. |
| − | | <syntaxhighlight lang=" | + | | <syntaxhighlight lang="json" enclose="div"> |
"ServiceAddress": [ "http://*:6060" ] | "ServiceAddress": [ "http://*:6060" ] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | |||
|- style="vertical-align:text-top" | |- style="vertical-align:text-top" | ||
| + | | 3 | ||
| + | | IP-адрес | ||
| + | | IP-адрес, на котором будет работать служба. | ||
| + | | <syntaxhighlight lang="json" enclose="div"> | ||
| + | "IPAddress": "IPAddress.IPv6Any" | ||
| + | </syntaxhighlight> | ||
| − | | | + | |- style="vertical-align:text-top" |
| − | | Строка подключения к | + | | 4 |
| − | | | + | | Строка подключения к MongoDB |
| − | | <syntaxhighlight lang=" | + | | Адрес подключения к серверу MongoDB. |
| + | | <syntaxhighlight lang="json" enclose="div"> | ||
"MongoConnectionString": "mongodb://bernoulli.megatec.ru:27017" | "MongoConnectionString": "mongodb://bernoulli.megatec.ru:27017" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | | 5 | ||
| + | | Префиксы коллекций | ||
| + | | Префиксы имён коллекций по уровням логирования. | ||
| + | | <syntaxhighlight lang="json" enclose="div"> | ||
| + | "CollectionPrefixes": { | ||
| + | "Info": "Info_", | ||
| + | "Error": "Error_" | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
|- style="vertical-align:text-top" | |- style="vertical-align:text-top" | ||
| + | | 6 | ||
| + | | Срок хранения логов | ||
| + | | Время хранения коллекций (в месяцах). | ||
| + | | <syntaxhighlight lang="json" enclose="div"> | ||
| + | "RetentionMonths": 12 | ||
| + | </syntaxhighlight> | ||
| + | |- style="vertical-align:text-top" | ||
| + | | 7 | ||
| + | | Инициализация при запуске | ||
| + | | Загружать все коллекции при запуске службы. | ||
| + | | <syntaxhighlight lang="json" enclose="div"> | ||
| + | "InitializeOnStartup": true | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | | 8 | ||
| + | | Автоочистка | ||
| + | | Включает удаление устаревших коллекций. | ||
| + | | <syntaxhighlight lang="json" enclose="div"> | ||
| + | "EnableAutoCleanup": true | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | | 9 | ||
| + | | Интервал очистки | ||
| + | | Интервал автоочистки в минутах (не используется). | ||
| + | | <syntaxhighlight lang="json" enclose="div"> | ||
| + | "CleanupIntervalMinutes": 30 | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | | 10 | ||
| + | | Индексы по умолчанию | ||
| + | | Индексы, создаваемые для каждой коллекции. | ||
| + | | <syntaxhighlight lang="json" enclose="div"> | ||
| + | "DefaultIndexes": [ | ||
| + | "Date", | ||
| + | "Level", | ||
| + | "Logger", | ||
| + | "Properties.MethodName" | ||
| + | ] | ||
| + | </syntaxhighlight> | ||
| + | |} | ||
* Установка осуществляется запуском скрипта ''_Install.bat'' от имени администратора. [[Файл:Bm135.png|Запуск от имени администратора]] | * Установка осуществляется запуском скрипта ''_Install.bat'' от имени администратора. [[Файл:Bm135.png|Запуск от имени администратора]] | ||
* При установке в Брандмауэре Windows создаются правила для входящих подключений для открытия порта LogService. [[Файл:Mb_192.png|Правила для входящих подключений MasterTourService]] | * При установке в Брандмауэре Windows создаются правила для входящих подключений для открытия порта LogService. [[Файл:Mb_192.png|Правила для входящих подключений MasterTourService]] | ||
| Строка 48: | Строка 112: | ||
* Для удаления службы необходимо запустить скрипт ''_UnInstall.bat'' от имени администратора. При этом будут удалены правила для входящих подключений. | * Для удаления службы необходимо запустить скрипт ''_UnInstall.bat'' от имени администратора. При этом будут удалены правила для входящих подключений. | ||
| + | |||
| + | ==Формат входящих сообщений== | ||
| + | ===Одиночный лог=== | ||
| + | <syntaxhighlight lang="json"> | ||
| + | { | ||
| + | "DatabaseName": "IntegrationService1", | ||
| + | "LogJson": "{ \\"Level\\": \\"Info\\", \\"Date\\": \\"2025-06-16T06:49:27Z\\", \\"Logger\\": \\"SomeClass\\", \\"Message\\": \\"Message text\\" }" | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ===Пакет логов=== | ||
| + | <syntaxhighlight lang="json"> | ||
| + | { | ||
| + | "DatabaseName": "IntegrationService1", | ||
| + | "LogsJson": [ | ||
| + | "{ \\"Level\\": \\"Info\\", \\"Date\\": \\"2025-06-16T06:49:27Z\\", ... }", | ||
| + | "{ \\"Level\\": \\"Error\\", \\"Date\\": \\"2025-06-16T06:50:00Z\\", ... }" | ||
| + | ] | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ==Хранение логов== | ||
| + | * Каждая коллекция создаётся в формате: <префикс><год_месяц> (например: ''Info_2025_07''). | ||
| + | * Коллекции создаются и индексируются автоматически. | ||
| + | * Устаревшие коллекции удаляются при поступлении новых (если включена автоочистка). | ||
| + | * Собственные логи службы сохраняются в: | ||
| + | * ''Logs/RunLogger.txt'' — стандартные сообщения; | ||
| + | * ''Logs/ExceptionLogger.txt'' — ошибки. | ||
| + | |||
| + | ==Настройка IntegrationService Interlook для работы с сервисом службы логирования== | ||
| + | ===Настройка конфигурационного файла web.config=== | ||
| + | Настройки задаются в секции <code><appSettings></code> файла <code>web.config</code>. | ||
| + | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" | ||
| + | |||
| + | |- style="background-color:#F2F2F2" | ||
| + | |||
| + | ! width="2%" | № | ||
| + | ! width="28%" | Описание | ||
| + | ! width="35%" | Значение | ||
| + | ! width="35%" | Настройка | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | |||
| + | | 1 | ||
| + | | Подключение к базе данных | ||
| + | | Строка подключения к базе данных | ||
| + | |<syntaxhighlight lang="xml" enclose="div"> | ||
| + | <add key="connectionString" value="Data Source=server;Initial Catalog=Base;User Id=User;Password=Password;Application Name=Interlook.IntegrationService" /> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | | 2 | ||
| + | | Процедура перезапуска кэша | ||
| + | | '''cachingTime''' | ||
| + | "cachingTime" value="-1" - инициализация кэша максимально производительная: каждый отель загружается в своем потоке, данные в кэше хранятся постоянно (возможны сбои).</br> | ||
| + | "cachingTime" value="-2"/> - весь кэш загружается в 2 (5,10) потока, в зависимости от значения настройки. Данные в кэше хранятся постоянно. | ||
| + | "cachingTime" value="10"/> - кэш не загружается при старте приложения, данные в нем хранятся 10 (300,600) секунд, в зависимости от значения настройки. | ||
| + | |<syntaxhighlight lang="xml" enclose="div"> | ||
| + | <add key="cachingTime" value="-1"/> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | |||
| + | | 3 | ||
| + | | Уровень использования процессора | ||
| + | | '''parallelismDegree'''</br> | ||
| + | Уровень использования процессора при расчетах</br> | ||
| + | Максимум - 100, минимум - 0</br> | ||
| + | |<syntaxhighlight lang="xml" enclose="div"> | ||
| + | <add key="parallelismDegree" value="70"/> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | |||
| + | | 4 | ||
| + | | Включение логирования о использовании памяти сервера | ||
| + | | '''LogCacheMemory'''</br> | ||
| + | Настройка служит для регулирования записи логов в таблицу базы данных.</br> | ||
| + | 0 - отключены логи и диагностика кеша, 1 - включены логи и диагностика кеша, 2 - тоже что и 1, только пишутся еще дополнительные более детальные логи. | ||
| + | |<syntaxhighlight lang="xml" enclose="div"> | ||
| + | <add key="LogCacheMemory" value="2"/> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | |||
| + | | 5 | ||
| + | | Настройка для включения логирования с использование сервиса логирования | ||
| + | | Настройка, позволяющая включать и выключать запись логов в сервис логирования | ||
| + | По умолчанию настройка установлена в значении '''false'''.<br /> | ||
| + | true - включено, false - выключено | ||
| + | | <syntaxhighlight lang="xml" enclose="div"> | ||
| + | <add key="EnableLogServiceLogging" value="true" /> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | |||
| + | | 6 | ||
| + | | Настройка для установления уровня логирования при использовании сервиса логирования | ||
| + | | Настройка, позволяющая регулировать уровень записи логов. | ||
| + | Может ринимать значенимя Trace,Debug,Info,Warn,Error,Fatal,Off | ||
| + | | <syntaxhighlight lang="xml" enclose="div"> | ||
| + | <add key="LogServiceMinimumlLogLevel" value="Debug" /> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | |||
| + | | 7 | ||
| + | | Адрес сервиса логирования | ||
| + | | Адрес сервиса логирования | ||
| + | | <syntaxhighlight lang="xml" enclose="div"> | ||
| + | <add key="LogService" value="http://localhost:6060" /> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | | 8 | ||
| + | | Название базы данных для сервиса логирования '''*Обязательно для заполнения''' | ||
| + | | Настройка, позволяющая указать в какую базу данных MongoDB записывать логи | ||
| + | | <syntaxhighlight lang="xml" enclose="div"> | ||
| + | <add key="LogServiceDatabaseTarget" value="IntegrationService1"/> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | |- style="vertical-align:text-top" | ||
| + | | 9 | ||
| + | | Количество попыток при ошибке отправки | ||
| + | | Число повторных попыток | ||
| + | | <syntaxhighlight lang="xml" enclose="div"> | ||
| + | <add key="LogServiceConnectionAttempts" value="10" /> | ||
| + | </syntaxhighlight> | ||
| + | |} | ||
| + | |||
| + | ===Дополнительно=== | ||
| + | В секции <code><system.web></code> рекомендуется установить: | ||
| + | <syntaxhighlight lang="xml"> | ||
| + | <compilation debug="false" targetFramework="4.0"> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ==Просмотр информации из базы данных MongoDB== | ||
| + | Для просмотра базы данных MongoDB необходимо использовать программу [https://www.mongodb.com/try/download/compass MongoDBCompass].<br /> | ||
| + | После скачивания и установки программы необходимо:<br /> | ||
| + | Запустить программу.<br /> | ||
| + | Указать в поле URL подключение к базе данных.<br /> | ||
| + | [[Файл:Ea_438.png|1000px]]<br /> | ||
| + | В разделе '''TLS/SSL''' установить значение '''Default'''.<br /> | ||
| + | [[Файл:Ea_439.png|1000px]]<br /> | ||
| + | Далее необходимо нажать кнопку '''Save&Connect'''.<br /> | ||
| + | Откроется окно ввода названия подключения.<br /> | ||
| + | Далее нажать кнопку '''Save&Connect'''.<br /> | ||
| + | [[Файл:Ea_440.png|600px]]<br /> | ||
| + | После первой записи ошибок создастся база с названием, указанным в параметре '''LogServiceDatabaseTarget''' конфигурационного файла web.config.<br /> | ||
| + | [[Файл:Ea_441.png|1000px]]<br /> | ||
| + | Ошибки сохраняются в папку с соответствующим типом: Debug, Error, Fatal, Info, Trace, Warn.<br /> | ||
| + | При открытии папки с типом ошибки отобразятся все записи по ошибкам данного типа.<br /> | ||
| + | [[Файл:Ea_442.png|1000px]]<br /> | ||
| + | Параметры ошибок:<br /> | ||
| + | *id — идентификатор ошибки<br /> | ||
| + | *Date — дата и время ошибки<br /> | ||
| + | *Level — тип ошибки<br /> | ||
| + | *Message — метод в котором сформировалась ошибка<br /> | ||
| + | *Logger — наименование ПО в котором произошла ошибка<br /> | ||
| + | *DBUserID — наименование пользователя от которого сформирована ошибка<br /> | ||
| + | *EventInfo — объект данных<br /> | ||
| + | **Host<br /> | ||
| + | **ThreadID<br /> | ||
| + | **ProcessID<br /> | ||
| + | **ProcessName<br /> | ||
| + | **SessionId<br /> | ||
| + | *Exception — объект данных<br /> | ||
| + | **Type — тип ошибки<br /> | ||
| + | **Message — сообщение ошибки<br /> | ||
| + | **Stacktrace — трассировка стека<br /> | ||
| + | Пример записи о конкретной ошибке:<br /> | ||
| + | [[Файл:Ea_443.png|600px]]<br /> | ||
Текущая версия на 19:31, 21 августа 2025
Содержание
Введение
Служба сервиса логирования LogService предназначена для централизованного приёма и хранения логов от клиентских приложений. Она принимает данные по HTTP и сохраняет их в MongoDB, автоматически создавая коллекции и управляя сроком хранения.
Предусловия установки
Служба LogService должна устанавливаться на компьютере, имеющем доступ к серверу базы данных MongoDB, или на компьютере, который сам является сервером базы данных.
Установка службы сервиса логирования
- Скопировать папку LogService из дистрибутива на сервер.
- Перед установкой службы сервиса логирования необходимо настроить конфигурационный файл appsettings.json.
Настройка конфигурационного файла appsettings.json
| № | Название | Описание | Настройка |
|---|---|---|---|
| 1 | Название службы | Задается название службы. По умолчанию служба будет создана с названием MegatecLogService. | "ServiceName": "MegatecLogService"
|
| 2 | Адрес службы | Адрес, на который поступают входящие HTTP-запросы. | "ServiceAddress": [ "http://*:6060" ]
|
| 3 | IP-адрес | IP-адрес, на котором будет работать служба. | "IPAddress": "IPAddress.IPv6Any"
|
| 4 | Строка подключения к MongoDB | Адрес подключения к серверу MongoDB. | "MongoConnectionString": "mongodb://bernoulli.megatec.ru:27017"
|
| 5 | Префиксы коллекций | Префиксы имён коллекций по уровням логирования. | "CollectionPrefixes": {
"Info": "Info_",
"Error": "Error_"
}
|
| 6 | Срок хранения логов | Время хранения коллекций (в месяцах). | "RetentionMonths": 12
|
| 7 | Инициализация при запуске | Загружать все коллекции при запуске службы. | "InitializeOnStartup": true
|
| 8 | Автоочистка | Включает удаление устаревших коллекций. | "EnableAutoCleanup": true
|
| 9 | Интервал очистки | Интервал автоочистки в минутах (не используется). | "CleanupIntervalMinutes": 30
|
| 10 | Индексы по умолчанию | Индексы, создаваемые для каждой коллекции. | "DefaultIndexes": [
"Date",
"Level",
"Logger",
"Properties.MethodName"
]
|
- Установка осуществляется запуском скрипта _Install.bat от имени администратора.

- При установке в Брандмауэре Windows создаются правила для входящих подключений для открытия порта LogService.

- В Службах Windows добавляется служба MegatecLogService.
- Для удаления службы необходимо запустить скрипт _UnInstall.bat от имени администратора. При этом будут удалены правила для входящих подключений.
Формат входящих сообщений
Одиночный лог
{
"DatabaseName": "IntegrationService1",
"LogJson": "{ \\"Level\\": \\"Info\\", \\"Date\\": \\"2025-06-16T06:49:27Z\\", \\"Logger\\": \\"SomeClass\\", \\"Message\\": \\"Message text\\" }"
}
Пакет логов
{
"DatabaseName": "IntegrationService1",
"LogsJson": [
"{ \\"Level\\": \\"Info\\", \\"Date\\": \\"2025-06-16T06:49:27Z\\", ... }",
"{ \\"Level\\": \\"Error\\", \\"Date\\": \\"2025-06-16T06:50:00Z\\", ... }"
]
}
Хранение логов
- Каждая коллекция создаётся в формате: <префикс><год_месяц> (например: Info_2025_07).
- Коллекции создаются и индексируются автоматически.
- Устаревшие коллекции удаляются при поступлении новых (если включена автоочистка).
- Собственные логи службы сохраняются в:
* Logs/RunLogger.txt — стандартные сообщения; * Logs/ExceptionLogger.txt — ошибки.
Настройка IntegrationService Interlook для работы с сервисом службы логирования
Настройка конфигурационного файла web.config
Настройки задаются в секции <appSettings> файла web.config.
| № | Описание | Значение | Настройка |
|---|---|---|---|
| 1 | Подключение к базе данных | Строка подключения к базе данных | <add key="connectionString" value="Data Source=server;Initial Catalog=Base;User Id=User;Password=Password;Application Name=Interlook.IntegrationService" />
|
| 2 | Процедура перезапуска кэша | cachingTime
"cachingTime" value="-1" - инициализация кэша максимально производительная: каждый отель загружается в своем потоке, данные в кэше хранятся постоянно (возможны сбои). |
<add key="cachingTime" value="-1"/>
|
| 3 | Уровень использования процессора | parallelismDegree Уровень использования процессора при расчетах |
<add key="parallelismDegree" value="70"/>
|
| 4 | Включение логирования о использовании памяти сервера | LogCacheMemory Настройка служит для регулирования записи логов в таблицу базы данных. |
<add key="LogCacheMemory" value="2"/>
|
| 5 | Настройка для включения логирования с использование сервиса логирования | Настройка, позволяющая включать и выключать запись логов в сервис логирования
По умолчанию настройка установлена в значении false. |
<add key="EnableLogServiceLogging" value="true" />
|
| 6 | Настройка для установления уровня логирования при использовании сервиса логирования | Настройка, позволяющая регулировать уровень записи логов.
Может ринимать значенимя Trace,Debug,Info,Warn,Error,Fatal,Off |
<add key="LogServiceMinimumlLogLevel" value="Debug" />
|
| 7 | Адрес сервиса логирования | Адрес сервиса логирования | <add key="LogService" value="http://localhost:6060" />
|
| 8 | Название базы данных для сервиса логирования *Обязательно для заполнения | Настройка, позволяющая указать в какую базу данных MongoDB записывать логи | <add key="LogServiceDatabaseTarget" value="IntegrationService1"/>
|
| 9 | Количество попыток при ошибке отправки | Число повторных попыток | <add key="LogServiceConnectionAttempts" value="10" />
|
Дополнительно
В секции <system.web> рекомендуется установить:
<compilation debug="false" targetFramework="4.0">
Просмотр информации из базы данных MongoDB
Для просмотра базы данных MongoDB необходимо использовать программу MongoDBCompass.
После скачивания и установки программы необходимо:
Запустить программу.
Указать в поле URL подключение к базе данных.
![]()
В разделе TLS/SSL установить значение Default.
![]()
Далее необходимо нажать кнопку Save&Connect.
Откроется окно ввода названия подключения.
Далее нажать кнопку Save&Connect.

После первой записи ошибок создастся база с названием, указанным в параметре LogServiceDatabaseTarget конфигурационного файла web.config.
![]()
Ошибки сохраняются в папку с соответствующим типом: Debug, Error, Fatal, Info, Trace, Warn.
При открытии папки с типом ошибки отобразятся все записи по ошибкам данного типа.
![]()
Параметры ошибок:
- id — идентификатор ошибки
- Date — дата и время ошибки
- Level — тип ошибки
- Message — метод в котором сформировалась ошибка
- Logger — наименование ПО в котором произошла ошибка
- DBUserID — наименование пользователя от которого сформирована ошибка
- EventInfo — объект данных
- Host
- ThreadID
- ProcessID
- ProcessName
- SessionId
- Host
- Exception — объект данных
- Type — тип ошибки
- Message — сообщение ошибки
- Stacktrace — трассировка стека
- Type — тип ошибки
