Во время работы в «Форсайт. Аналитическая платформа» ядром формируется и выводится отладочная информация.
Для просмотра отладочной информации используйте:
поток ошибок stderr в ОС Linux;
syslog в ОС Linux;
Debugger в ОС Windows, который можно просмотреть через специализированную программу, например, DebugView. DebugView входит в пакет программ Sysinternals.
Пример лога DebugView с информацией из «Форсайт. Аналитическая платформа»:
...
1 0.00000000 [30360] DLL: PiLib is loaded
2 0.00062320 [30360] [II] 25200 [] GENERIC: 10.11
3 0.00066300 [30360] [II] 25200 [] GENERIC: PiLog init: reading settings
4 0.02011950 [30360] DLL: ModDrawing is loaded
5 0.02126710 [30360] DLL: UiLib is loaded
6 0.02216730 [30360] DLL: Fore is loaded
7 0.02294760 [30360] DLL: UiSom is loaded
8 0.02336640 [30360] DLL: ModAndy is loaded
9 0.02379670 [30360] DLL: ModImportExport is loaded
10 0.02494750 [30360] [II] 25200 [] INTL: SetLocale=Russian_RUS.1251
11 0.02583720 [30360] [II] 25200 [] INTL: c:\Program Files\Foresight\Analytics Platform 10.x\ru\PiResCore.dll
12 0.02606710 [30360] DLL: ModTabSheet is loaded
13 0.02659750 [30360] DLL: UiTabSheet is loaded
14 0.02702360 [30360] DLL: UiAndy is loaded
15 0.02761700 [30360] DLL: UiWsp is loaded
16 0.02833690 [30360] [II] 25200 [] EVENT: Start event...
17 0.02840550 [30360] [II] 25200 [] EVENT: Finish event...
18 0.03058900 [30360] [II] 25200 [] INTL: c:\Program Files\Foresight\Analytics Platform 10.x\ru\BCGCBProRes.dll
19 0.12121540 [30360] [II] 25200 [] STARTUP: State persistence initialized
20 0.12124170 [30360] [II] 25200 [] STARTUP: Keyboard manager initialized
21 0.12325800 [30360] [II] 25200 [] INTL: c:\Program Files\Foresight\Analytics Platform 10.x\ru\PiResUi.dll
22 0.12609661 [30360] [II] 25200 [] STARTUP: BCGCBP initialized
23 0.12648480 [30360] [II] 25200 [] STARTUP: InitCommonControls passed
24 0.12666710 [30360] DLL: Studio is loaded
25 0.12701081 [30360] [II] 25200 [] STARTUP: Command line parsed
26 0.12703790 [30360] [II] 25200 [] STARTUP: OLE initialized
27 0.13456510 [30360] [II] 25200 [] STARTUP: InitCommonControls passed
28 0.13474131 [30360] DLL: UiHost is loaded
29 0.14563610 [30360] [II] 25200 [] STARTUP: Image lists loaded
30 0.14769641 [30360] DLL: KeSom is loaded
31 0.14885169 [30360] DLL: XMLLib2 is loaded
33 0.19587710 [30360] [II] 25200 [] LICENSE: License service: https://lic-server.world:8510, source: envvar
34 0.19675070 [30360] [II] 25200 [] LICENSE: Requesting feature "AnalyticsPlatform" v9...
35 0.31868681 [30360] [II] 25200 [] LICENSE: Accepted request for feature "AnalyticsPlatform" from service
36 0.34603611 [30360] [II] 25200 [] LICENSE: License AnalyticsPlatform released from service
37 3.09939647 [30360] [II] 25200 [] LICENSE: Requesting feature "AnalyticsPlatform" v9...
38 3.21737957 [30360] [II] 25200 [] LICENSE: Accepted request for feature "AnalyticsPlatform" from service
39 3.21863675 [30360] [II] 25200 [] MB: Use audit connection for audit log: False
40 3.22187257 [30360] [II] 25200 [] SECURITY: Audit user: FSAUDIT, source: registry HKLM
41 3.24525571 [30360] DLL: KeMsSql is loaded
42 3.27947283 [30360] [II] 25200 [] SECURITY: Builtin authorization mode: False
43 3.29469609 [30360] [EE] 25200 [] SETUP: The "RecursiveDeps" settings parameter not found
44 3.29900932 [30360] [II] 25200 [] MB: SessionId for log = [14E34FEFCF424612]
45 3.29976153 [30360] [II] 25200 [14E34FEFCF424612] SETUP: Key: \Software\Foresight\Foresight Analytics Platform\10.0\Service\Mbs\WAREHOUSE Value: endpoint = , NOT SET
46 3.31604576 [30360] DLL: KeABAC is loaded
47 3.36238718 [30360] [II] 25200 [14E34FEFCF424612] USERINFO: User = ADMIN, DB session Id = 51, JLO session Id = 394420
48 3.36488032 [30360] [II] 25200 [14E34FEFCF424612] SYSUTILS: Getting cache folder. Result folder is C:\Users\ivan.ivanov\AppData\Local\Foresight\Foresight Analytics Platform\AsmCache0\Mod\WAREHOUSE\10_10_10050_0\Runtime\D1\
49 3.36496329 [30360] [II] 25200 [14E34FEFCF424612] SYSUTILS: Getting cache folder. Result folder is C:\Users\ivan.ivanov\AppData\Local\Foresight\Foresight Analytics Platform\AsmCache0\Mod\WAREHOUSE\10_10_10050_0\Runtime\
50 4.29782391 [30360] DLL: KeFore is loaded
51 5.00763750 [30360] [II] 25200 [14E34FEFCF424612] MB: Metabase opened - WAREHOUSE (394420)
52 5.02231264 [30360] DLL: KePython is loaded
53 5.02965021 [30360] DLL: ModIo is loaded
54 5.12129831 [30360] [II] 25200 [14E34FEFCF424612] PLUG: ModForms
55 5.12792158 [30360] DLL: ModForms is loaded
56 5.13086939 [30360] [II] 25200 [14E34FEFCF424612] STARTUP: Login dialog passed
...
Описание структуры лога представлено ниже.
Примечание. Номера строк и время фиксации сообщения в примере лога выводятся самой программой DebugView.
Объем выводимой отладочной информации зависит от заданного уровня логирования. Уровень логирования регулируется параметром SeverityLevel, описание которого представлено в подразделе «Расширенное логирование и получение дополнительной отладочной информации». По умолчанию уровень логирования равен 2, при этом в лог выводится следующая информация:
загружаемые и выгружаемые библиотеки платформы;
системные сообщения, генерируемые ядром платформы;
сообщения компилятора Fore;
сообщения, выводимые в консоль среды разработки из прикладного кода;
время выполнения каких-либо операций;
ошибки.
В начале сессии выводится информация о загружаемых библиотеках, проверке лицензий, уникальный идентификатор сессии. Если изменить уровень логирования на SeverityLevel=1, то будет доступна более подробная информация: информация о пользователе, выполняемые запросы к СУБД и другие сообщения:
...
143 3.51684332 [7344] [DD] 4076 [9CA45A8E7CB34068] PREPARED SQL: "select a.DAT, a.ID, a.VI, a.VS from dbo.B_SEC_DAT a\n"
144 3.51791120 [7344] [DD] 4076 [9CA45A8E7CB34068] PREPARED SQL: "select a.STA, a.ID, a.TYP, a.DOM, a.ACC from dbo.B_SEC_STA a where a.TYP = :T and a.DOM = :D\n"
145 3.51799679 [7344] [DD] 4076 [9CA45A8E7CB34068] PARAMS: "\n T = 1\n D = 0"
146 3.51907277 [7344] [DD] 4076 [9CA45A8E7CB34068] PREPARED SQL: "select a.CER_K, a.FLG, a.ID, a.NAM, a.DAT from dbo.B_CER_V a\n"
147 3.52209711 [7344] [DD] 4076 [9CA45A8E7CB34068] PREPARED SQL: "select SUSER_SNAME(b.sid) from warehouse.dbo.sysusers b where upper(b.name) = 'DBO'\n"
148 3.52465963 [7344] [DD] 4076 [9CA45A8E7CB34068] PREPARED SQL: exec dbo.B_LOGNSUC :USRLO, :USRSTA, :USRDOM, :RESLO OUT
149 3.52485204 [7344] [DD] 4076 [9CA45A8E7CB34068] PARAMS: "\n USRLO = ivanov\n USRSTA = IVANOV\n USRDOM = WORK\n RESLO = "
150 3.53103995 [7344] [DD] 4076 [9CA45A8E7CB34068] PREPARED SQL: "select a.DAT, a.ID, a.VI, a.VS from dbo.B_SEC_DAT a\n"
151 3.54518557 [7344] [DD] 4076 [9CA45A8E7CB34068] PREPARED SQL: insert into dbo.B_JLO(SES, STAMP, STAMP_OUT, US_SID, US_NAM, US_DES, US_STA, US_OS, US_IP, ALLO,CMNT,SES_ID, US_MAC) values(:A, :B, :C, :D, :E, :F, :G, :H, :I, :J,:CMNT, @@SPID, :K)
152 3.54531169 [7344] [DD] 4076 [9CA45A8E7CB34068] PARAMS: "\n A = 394422\n B = 10.09.2025 10:58:42.840\n C = 06.06.2028 10:58:42.840\n D = PS-1-1\n E = ADMIN\n F = Пользователь ADMIN\n G = IVANOV\n H = ivan.ivanov\n I = 10.10.10.1\n J = 1\n CMNT = Версия платформы: 10.11 Master x64 Веб приложение\n K = 94de806959dd"
...
Каждая строка в логе представляется в следующем формате:
[<SeverityLevel>] <ThreadId> [<UserContext>] <CategoryName>: <Message>\r\n
Где:
SeverityLevel. Уровень важности сообщения. Представляется в виде дублированной первой буквы английского наименования уровня логирования:
[TT] - Сообщения уровня Trace;
[DD] - Сообщения уровня Debug;
[II] - Сообщения уровня Info;
[WW] - Сообщения уровня Warning;
[EE] - Сообщения уровня Error;
[CC] - Сообщения уровня Critical.
ThreadId. Идентификатор потока приложения;
UserContext. Уникальный идентификатор сессии пользователя. Формируется во время подключения к репозиторию, в дальнейшем данным идентификатором дополняются сообщения, чтобы можно было следить в рамках какого подключения выполнялись определённые действия. Пример строки формирования идентификатора сессии: [18392] [II] 37648 [] MB: SessionId for log = [7E728F555694421F];
CategoryName. Категория события. Зависит от выполняемого действия или отражает инструмент платформы, выполняющий действие;
Message. Непосредственное сообщение, выводимое в лог.
Используются следующие категории для обозначения сообщений:
Основные категории отладочных сообщений:
$DBG. Сообщения, выводимые при выполнении прикладного кода на Fore с помощью методов класса Debug;
DURATION. Время выполнения какого-либо метода или действия;
EXCEPTION. Различные виды ошибок;
EXTSRV. Сообщения, выводимые при авторизации пользователей на внешнем сервисе;
FORE. Сообщения, выводимые компилятором языка Fore;
PARAMS. Набор параметров, передаваемых вместе с запросом;
SECURITY. Сообщения, выводимые при работе политики безопасности системы;
SEGMENTS. Набор параметров, выводимых при работе с кубами данных. Доступен, если в ветке реестра [HKLM\Software\Foresight\Foresight Analytics Platform\10.0\Debug] создан параметр DataRightsLog/SegmentLog и он принимает значение «1»;
SQL или PREPARED SQL. Запрос, выполняемый к серверу СУБД;
Инструменты, с которыми связано отладочное сообщение:
[eax$]. Сообщение, сгенерированное при работе с экспресс-отчётами;
[ms$]. Сообщение, сгенерированное при работе инструментов моделирования и прогнозирования, алгоритмов расчёта;
ADHOC. Сообщение, сгенерированное при работе с аналитическими панелями;
INMEM. Выполнение каких-либо действий, связанных с кешированием In-Memory: получение данных из кеша, сохранение данных в кеш и другие;
JAVA. Сообщения, связанные с выполнением кода на Java;
Python. Сообщения, связанные с выполнением кода на Python;
VCS. Сообщения, связанные с работой системы управления версиями.
В первую очередь проверьте наличие сообщений об ошибках. Для этого воспользуйтесь поиском по тексту ключевого слова Exception. Для поиска используйте стандартное сочетание клавиш CTRL+F, для продолжения поиска - F3. Пример возможной ошибки:
...
756 1.52057612 [32996] [II] 4160 [] $DBG: "[II] 31268 [E1011C7A807C4E65] INTERPRETER: Start assembly loading: ABAC\r\n"
757 1.52073872 [32996] [II] 4160 [] $DBG: "[II] 31268 [E1011C7A807C4E65] INTERPRETER: Finish assembly loading: ABAC\r\n"
758 1.52089131 [32996] [II] 4160 [] $DBG: "[II] 31268 [E1011C7A807C4E65] INTERPRETER: Start assembly loading: Metabase\r\n"
759 1.52153146 [32996] [II] 4160 [] $DBG: "[II] 31268 [E1011C7A807C4E65] INTERPRETER: Finish assembly loading: Metabase\r\n"
760 1.52160943 [32996] [II] 4160 [] $DBG: "[II] 31268 [E1011C7A807C4E65] INTERPRETER: Finish assembly loading: OBJ347145\r\n"
761 1.52190483 [32996] [II] 4160 [] INTL: SetLocale=Russian_RUS.1251
762 1.52371609 [32996] [II] 21960 [C2DB92EBA757476F] GENERIC: LockResolve CNavigatePanel::InitMembers()
763 1.53395736 [32996] [II] 4160 [] $DBG: "[EE] 31268 [E1011C7A807C4E65] EXCEPTION: CPiException("Обращение к еще не созданному объекту)"\r\n"
764 1.53758216 [32996] [II] 21960 [C2DB92EBA757476F] GENERIC: LockResolve CNavigatePanel::InitMembers()
765 1.62012684 [32996] [EE] 21960 [C2DB92EBA757476F] EXCEPTION: CPiException("Обращение к еще не созданному объекту)"
766 3.84239078 [32996] [II] 29644 [] $DBG: "DLL: PiLib is loaded\n"
767 3.84344912 [32996] [II] 29644 [] $DBG: "[II] 32112 [] GENERIC: 10.11\r\n"
768 3.84356928 [32996] [II] 29644 [] $DBG: "[II] 32112 [] GENERIC: PiLog init: reading settings\r\n"
769 3.86722565 [32996] [II] 29644 [] $DBG: "DLL: ModDrawing is loaded\n"
770 3.86933684 [32996] [II] 29644 [] $DBG: "DLL: UiLib is loaded\n"
771 3.87102723 [32996] [II] 29644 [] $DBG: "DLL: Fore is loaded\n"
772 3.87236595 [32996] [II] 29644 [] $DBG: "DLL: UiSom is loaded\n"
...
При уровне логирования 1, кроме текста ошибки, будет доступен стек вызова:
...
1077 99.97761536 [20628] [II] 31860 [] $DBG: "[II] 1312 [7F7D967886514524] INTERPRETER: Start assembly loading: ABAC\r\n"
1078 99.97769165 [20628] [II] 31860 [] $DBG: "[II] 1312 [7F7D967886514524] INTERPRETER: Finish assembly loading: ABAC\r\n"
1079 99.97793579 [20628] [II] 31860 [] $DBG: "[II] 1312 [7F7D967886514524] INTERPRETER: Start assembly loading: Metabase\r\n"
1080 99.97853851 [20628] [II] 31860 [] $DBG: "[II] 1312 [7F7D967886514524] INTERPRETER: Finish assembly loading: Metabase\r\n"
1081 99.97861481 [20628] [II] 31860 [] $DBG: "[II] 1312 [7F7D967886514524] INTERPRETER: Finish assembly loading: OBJ347145\r\n"
1082 99.97888947 [20628] [II] 31860 [] INTL: SetLocale=Russian_RUS.1251
1083 99.98091125 [20628] [II] 8028 [36C80744572D4A22] GENERIC: LockResolve CNavigatePanel::InitMembers()
1084 99.99610901 [20628] [II] 31860 [] $DBG: "[EE] 1312 [7F7D967886514524] EXCEPTION: CPiException("Обращение к еще не созданному объекту)"\r\n"
1085 100.00005341 [20628] [II] 8028 [36C80744572D4A22] GENERIC: LockResolve CNavigatePanel::InitMembers()
1086 100.50470734 [20628] [II] 31860 [] $DBG: "[EE] 1312 [7F7D967886514524] EXCEPTION_STACK: "\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiException::TraceStack\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiException::SetMessageID\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiException::SetMessage\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiException::CPiException\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiCultureInfo::TryParseTextToValue\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\Fore.dll at CClassInfo::CreateExceptionObjectInstance\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\Fore.dll at CInterpreter::AddOriginalObjectToMap\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\Fore.dll at CInterpreter::LookupOriginalObject\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\Fore.dll at CInterpreter::ShowLivingObjects\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\Fore.dll at CInterpreter::AddOriginalObjectToMap\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\Fore.dll at CFrtRuntimeContext::put_ValueByKey\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\KeFore.dll at CSomBaseMethod::put_Tag\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\KeSom.dll at cry::CCryptGOST::operator=\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\KeSom.dll at cry::CCryptGOST::operator=\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\KeSom.dll at cry::CCryptGOST::operator=\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\KeSom.dll at cry::CCryptGOST::operator=\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\UiSom.dll at CUiCtrlDimTreeLevels::OnKillFocus\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\UiSom.dll at CUiMetaOpen::GetInstance\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\UiSom.dll at CUiClass::OpenObject\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\UiSom.dll at CUiClass::OpenObject\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\UiSom.dll at CUiMetabase::DoOnOpen\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\Studio.exe at (empty)\r\n() C:\Windows\SYSTEM32\mfc140u.dll at (empty)\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\Studio.exe at (empty)\r\n() C:\Windows\System32\KERNEL32.DLL at BaseThreadInitThunk\r\n() C:\Windows\SYSTEM32\ntdll.dll at RtlUserThreadStart"\r\n"
1087 100.59767151 [20628] [EE] 8028 [36C80744572D4A22] EXCEPTION: CPiException("Обращение к еще не созданному объекту)"
1088 100.97941589 [20628] [EE] 8028 [36C80744572D4A22] EXCEPTION_STACK: "\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiException::TraceStack\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiException::SetMessageID\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiException::SetMessage\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiException::CPiException\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\UiDevEnv.dll at DllPluginActivate\r\n() C:\Windows\SYSTEM32\mfc140u.dll at (empty)\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\UiLib.dll at CUiAxiomFrameImpl<CBCGPMDIFrameWnd>::OnWndMsg\r\n() C:\Windows\SYSTEM32\mfc140u.dll at (empty)\r\n() C:\Windows\SYSTEM32\mfc140u.dll at (empty)\r\n() C:\Windows\SYSTEM32\mfc140u.dll at (empty)\r\n() C:\Windows\SYSTEM32\mfc140u.dll at (empty)\r\n() C:\Windows\System32\USER32.dll at CallWindowProcW\r\n() C:\Windows\System32\USER32.dll at DispatchMessageW\r\n() C:\Windows\SYSTEM32\mfc140u.dll at (empty)\r\n() C:\Windows\SYSTEM32\mfc140u.dll at (empty)\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\PiLib.dll at CPiApp::Run\r\n() C:\Windows\SYSTEM32\mfc140u.dll at (empty)\r\n() C:\Program Files\Foresight\Analytics Platform 10.x\Studio.exe at (empty)\r\n() C:\Windows\System32\KERNEL32.DLL at BaseThreadInitThunk\r\n() C:\Windows\SYSTEM32\ntdll.dll at RtlUserThreadStart"
1089 104.24187469 [20628] [II] 17572 [] $DBG: "DLL: PiLib is loaded\n"
1090 104.24253082 [20628] [II] 17572 [] $DBG: "[II] 24432 [] GENERIC: 10.11\r\n"
1091 104.24261475 [20628] [II] 17572 [] $DBG: "[II] 24432 [] GENERIC: PiLog init: reading settings\r\n"
1092 104.26042938 [20628] [II] 17572 [] $DBG: "DLL: ModDrawing is loaded\n"
1093 104.26187897 [20628] [II] 17572 [] $DBG: "DLL: UiLib is loaded\n"
1094 104.26300049 [20628] [II] 17572 [] $DBG: "DLL: Fore is loaded\n"
1095 104.26408386 [20628] [II] 17572 [] $DBG: "DLL: UiSom is loaded\n"
...
Ошибки могут быть:
На стадии компиляции. Если ошибка возникла на стадии компиляции, то она также будет отражена в окне сообщений компилятора. При этом по ней может быть вызвана справка. Сводный список ошибок, возникающих на стадии компиляции, представлен в подразделе «Сообщения компилятора Fore»;
На стадии выполнения. Если ошибка вызвана на стадии выполнения кода, то изучите текст ошибки, место её возникновения: идентификатор модуля и номер строки. В большинстве случаев по тексту можно понять причину возникновения ошибки и внести необходимые изменения. Если причину ошибки определить не удалось, то скопируйте и сохраните в файл блок лога от запуска приложения до ошибки. Полученный файл с описанием производимых действий отправьте в техническую поддержку по адресу support@fsight.ru или через сервисы технической поддержки, которые доступны после регистрации на сайте.
В редких случаях может возникнут ошибка с текстом Access Violation. Данная ошибка свидетельствует о наличии необработанной исключительной ситуации во внутреннем коде продукта «Форсайт. Аналитическая платформа». Сообщите в техническую поддержку при каких условиях возникла данная ошибка, чтобы в дальнейшем была возможность внести критические изменения в код продукта.
Кроме ошибок в лог выводятся информационные сообщения, отражающие процесс работы приложения. Рассмотрим отдельно по инструментам возможные сообщения, их содержание и интерпретацию для оценки и планирования дальнейших действий.
См. также:
Запуск и отладка | Расширенное логирование и получение дополнительной отладочной информации