====== Логи системы ======
===== Типы логов =====
ADVANTA умеет записывать **детальные технические логи** о:
* событиях
* ошибках
* производительности системы
* процессе создания LINQ-контекста (с версии 3.27)
Все настройки детальных системных логов расположены здесь: **Администрирование → Общие настройки → Общие настройки → Система сбора информации об ошибках**.
Этот инструмент пригодится вам, чтобы зафиксировать дефект и передать его в поддержку продукта.
По умолчанию логирование в Advanta не настроено и не включено.
===== Настройка логирования =====
* ''Включить логирование производительности системных процессов'' -- поставить чек-бокс можно только после того, как заполнено поле "Путь к логу производительности системных процессов"
* ''Путь к логу производительности системных процессов'' -- место для вставки абсолютной ссылки на сервер, куда будут записываться логи. \\ Например: C:\Logs\
* ''Максимальный размер логов производительности системных процессов, МБ'' -- максимальный размер файлов с логами. Файлы логов не превысят указанный максимальный размер, и перезапись записей идет по кругу. При достижении максимального размера новые записи затирают самые старые.
* ''Писать в логи производительности системных процессов все запросы'' -- чек-бокс, который даёт записывать не только ключевые события.
* ''Писать в логи производительности системных процессов в Seq'' -- писать логи через Seq или нет. (Можно включить, только при условии, что поле "Url адрес системы обработки логов Seq" заполнено.)
* ''Url адрес системы обработки логов Seq'' -- Url адрес системы обработки логов Seq, развёрнутый на вашем сервере. \\ Например: http://192.168.0.78:8888
**Seq** -- система сбора и анализа логов. Подробно о том, [[https://datalust.co/seq|что такое Seq]]. \\ Инструмент позволяет собирать логи в более человечном представлении, преобразовывать их для визуализации в и аналитики (например, библиотека Serilog через Logstash в ElasticSearch; визуализация возможна через grafana).
* ''Выгрузить логи производительности системных процессов'' -- экспорт архива файлов с логами производительности системных процессов с вашего сервера (по пути, который указан в поле "Путь к логу производительности системных процессов").
* ''Выгрузить системные логи'' -- НЕ ОТНОСИТСЯ к логированию производительности. Экспорт системного лога log4net. Лог настраивается отдельно в ходе первоначальной установки и настройки системы Advanta (см. следующий раздел на этой странице).
* ''Исключения для логов производительности системных процессов'' -- фильтр по URL. Укажите здесь все те фразы, которые содержатся в URL тех страниц, которые не должны логироваться. Это может относиться как ко всем однотипным объектам, так и к конкретным (если будет указаны их GUID).
{{ :product:settings:system_log_1.png?nolink |}}
**Рисунок 1** -- Система логирования производительности системных процессов
===== Ошибки и события =====
Обычно необходимость в логировании появляется из-за возникновения дефекта, который нужно зафиксировать и передать в службу поддержки Advanta.
==== Как настроить лог событий и лог ошибок ====
- Запросите в поддержке файл ''log4net.config'' или скопируйте и сохраните текст ниже в файле с таким названием и расширением.
- Поместите файл log4net.config в корень папки с веб-контентом системы. \\ Корневая директория приложения по умолчанию имеет путь C:\inetpub\wwwroot\streamline
Путь по умолчанию, если вы устанавливали систему строго [[product:settings:system:install|по инструкции]].
- Перезапустите пул приложения системы, после перезапуска выполните несколько действий в системе и проверьте что в файлах лого начали появляться записи.
Файл ''log4net.config'' настраивает сразу 2 лога: системных событий и ошибок.
=== Как передать ошибку в поддержку ===
- Cохраните файл ''log4net.config'' в корневой директории Advanta.
- Воспроизведите ошибку.
- Выгрузите файл с логом и передайте его в поддержку вместе с данными о времени воспроизведения и ссылками на страницы системы, где выполнялось воспроизведение ошибки.
==== Как выгрузить лог событий ====
Если у вас есть доступ к директории, где размещается Advanta на вашем веб-сервере, вы можете скопировать эти файлы оттуда.
Если прямого доступа к файлам на сервере нет, выгрузите логи в интерфейсе Администратора в Advanta:
- Администрирование → Общие настройки → Общие настройки → Система сбора информации об ошибках
- Выгрузить логи производительности системных процессов → "Выгрузить"
Как читать лог событий
^ Название чек-бокса ^ В логе ^ Описание ^
|Процедура очистки памяти системы|MemoryUsingStartPeriodicMaintenance|Выставляется значение параметра GCSettings.LargeObjectHeapCompactionMode в GCLargeObjectHeapCompactionMode.CompactOnce. \\ Это приведет к сжатию кучи больших объектов (LOH во время следующей блокирующей сборки мусора второго поколения. \\ Докуметация: https://docs.microsoft.com/ru-ru/dotnet/api/system.runtime.gcsettings.largeobjectheapcompactionmode|
|Расписание|FormRequestDistributionController.MigrateFormFromProjectTypes|Миграция старых автозапросов форм в новый тип.|
|Рассылка запросов на отчеты о статусе|DirectoryRequestService.MakeAutoRequests|Создание запросов на создание отчетов исполнителям.|
|Рассылка уведомлений о сроках проектов|ProjectsService.CheckProjectsTime|Раcсылаются события: \\ 1. Превышение планируемого срока завершения проекта. Возникает, когда текущая дата больше планируемой даты завершения. \\ 2. Превышение планируемого срока начала проекта. Возникает, когда текущая дата больше планируемой даты начала. \\ 3. Уведомление о приближающемся завершении проекта. Возникает, когда текущая дата больше порога уведомления.|
|Рассылка писем|MailDistributor.SendMail|Рассылка писем, которые ранее не отправлялись.|
|Биллинг геймификации|GamingCharging.ScheduledCharge|Рассчет баланса и рейтинга в геймификации.|
|Автоматические запросы по формам|FormRequestDistributionController.ProcessAutoRequests|Формирование автоматических запросов пользователям по формам по расписанию.|
|Перестроение кубов по расписанию|CubeDataManager.UpdateCubesBySchedule| |
|Построение excel-отчетов по расписанию|CalculateExcelReportService.CalculateReportsBySchedule| |
|Пересчет значений виджетов|CalculateWidgetValuestService.CalculateWidgetValuesBySchedule| |
|Обновление Google токенов на подписку каналов|GoogleCalendarServiceManager.UpdateOutdatedSyncronizationChannels| |
|Отправка запросов на выполнение задач по связи FS с задержкой|QuestionsManager.RegisterProjectStartTaskWithDependencyDelay| |
|Копирование не завершенных проектов из предыдущего периода|CheckTimeSheetProjects|Копирование в табель не завершенных проектов из предыдущего периода|
|Проверка соединений пользователей с Exchange|ExchangeServiceProvider.CheckConnections|Проверка соединений пользователей с Microsoft Exchange Server.|
|Сбор статистики активности пользователей|CollectingUserActivityStatistics| |
|Напоминание о просроченных запросах|RemindExpiredQuestions|Рассылка напоминаний о просроченных запросах по формам и согласованиям. |
|Расширение активностей таймера в отдельных решениях|Scheduler.Execute| |
==== Как выгрузить лог ошибок ====
Лог ошибок доступен только в директории вашего сервера, где размещается система Advanta.
Местоположение лога определяется конфигурацией файла ''log4net.config''. Как правило, это: C:\SL_Files\Documents\logs\ErrorLog.txt
===== Логи производительности =====
Вы можете получать лог производительности процессов системы.
По умолчанию лог не пишется! Все логи требуют ручной настройки и автоматически не собираются!
==== Как настроить ====
Чтобы лог начал собираться и записываться:
- Администрирование → Общие настройки → Общие настройки → Система сбора информации об ошибках
- В портлете "**Система логирования производительности системных процессов**" заполните поля:
- "Путь к логу производительности системных процессов" -- путь к каталогу файловой системы на вашем сервере. \\ Например: ''C:\Logs\''
* Создайте папку, где должен храниться лог, на веб-сервере. \\ //Если папки не существует, лог писаться не будет!//
* Проверьте, что у пользователя, из-под которого запущена Advanta на Microsoft Server есть доступ к этой папке (запись).
- поставьте чек-бокс "Включить логирование производительности системных процессов".
- если развернут [[https://datalust.co/seq|Seq]], можно настроить также логирование через него:
- вставьте ссылку на Seq на вашем сервере в поле **"Url адрес системы обработки логов Seq"**; \\ Например: ''http://192.168.0.78:8888''
- поставьте чек-бокс "**Писать в логи производительности системных процессов в Seq**"
==== Как выгрузить ====
Если у вас есть доступ к серверу, где хранятся документы для системы ADVANTA, вы можете скопировать их оттуда. \\
Файлы с логами лежат по тому адресу, который указан в поле ''Путь к логу производительности системных процессов'' (Администрирование → Общие настройки → Общие настройки → Система сбора информации об ошибках → Система логирования производительности системных процессов).
Если доступа к файлам на сервере нет, выгрузите логи через интерфейсе ADVANTA:
- Администрирование → Общие настройки → Общие настройки → Система сбора информации об ошибках
- "Выгрузить логи производительности системных процессов" → ''Выгрузить''
===== Логи создания LINQ-контекста =====
Данная опция используется в целях отладки.
Чтобы включить логирование операций создания LINQ-контекста, необходимо сперва включить [[https://wiki.a2nta.ru/doku.php/product/settings/logs/advanced#%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8_%D0%B8_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F|логи ошибок log4net]], затем добавить настройку в файле ''client.config'':\\
**LinqToAdvantaLogGeneratedCode** со значением **'true'**
...
Запись сгенерированного при перестроении LINQ-контекста C#-кода будет осуществляться в общий лог ошибок log4net.\\
В записях лога такие сообщения начинаются со строки "Building LINQ-context ".
Большинство записей статистического характера: отображают каких и сколько объектов обработано.
Запись, сообщение в которой начинается с "Building LINQ-context generatad C#-code" - содержит сгенерированный код. Это может быть огромная по размеру запись. Именно для неё введён параметр настройки **LinqToAdvantaLogGeneratedCode** в ''client.config''.
\\
Так как объём C#-кода при формировании LINQ-контекста может составлять несколько мегабайт, после использования и завершении отладки эту настройку следует выключить - установить в значение 'false'. Если **LinqToAdvantaLogGeneratedCode** имеет значение **'false'** или отсутствует, то запись сгенерированного кода в лог не будет производиться.\\
По умолчанию значение этой опции в файле ''client.config'' установлено в значение **'false'**.