Форум » GUI » Предложения по ErrorLog.htm » Ответить

Предложения по ErrorLog.htm

Andrey: Andrey пишет: [quote] Есть большой лог ошибок ErrorLog.htm Просматривать вручную его ОЧЕНЬ ДОЛГО... Как бы сделать с него выборку: Date: 10.04.19 Time: 21:25:30 Error MGERROR/0 Control: PrgBar_1 Of Form_Index Not defined. Program terminated. Called from - выборку ошибок 5 или 7 уровней. Может сделать бы стандартный компонент в МиниГуи для этого ? В виде дерева будет наверное очень удобно ![/quote] Можно данную проблему решить улучшением HTML-верстки для ErrorSys.prg Ошибки будут сразу видны, а подробности свернутыми будут. Но каждый узел можно развернуть и посмотреть детально. Тогда на современных браузерах это будет выглядеть так - Firefox ErrorLog.htm Для просмотра нового ErrorLog2.htm - https://cloud.mail.ru/public/5aHd/2aTdiSeoy Правда в микрософтном IE выглядеть будет по старому, сразу развернутый, длинный предлинный... Как вам такая идея ? Что править в ErrorSys.prg я примерно знаю, есть у кого проконсультироваться.

Ответов - 34, стр: 1 2 All

SergKis: Andrey пишет Как вам такая идея ? По мне, лучше текстовый файл (передалываем для себя). Смотрим Ntepad3. Можно тут применить (реализовав поиск) hbedit с расцветкой для LANG_TXT Про выборки из txt файла - дело техники Т.е. иметь установку, какой ErrorLog.htm или ErrorLog.txt

Haz: SergKis пишет: По мне, лучше текстовый файл (передалываем для себя Так и есть. Также посещала мысль сделать ErrorView отдельной утилитой, а сам вывод в dbf. Нл пока переделал в текст под себя

SergKis: Haz пишет а сам вывод в dbf. Зачем ? Разве мало вариантов виеверов текстовых файлов. С clipper какой то перенесен в wvt и работает местами.


Haz: SergKis пишет: Зачем ? По dbf проще и привычнее ставить фильтр по разделам лога, только по этому. Да и растащить по окнам не составит труда. В одном ошибка, в другом все установки, в третьем инфо по текущим запмсям Сейчас просто глазами в тексте ищу, и все нахожу. Идея возникла только после того как потребовалось понять не просто ошибку, а у какого пользователя она возникает, чтоб допросить с пристрастием как он это делает.

SergKis: Haz пишет По dbf проще и привычнее ставить фильтр по разделам лога Это понятно, но лог содержит, как правило, больше чем надо в дбф. Т.е. процедура поедания лога[ов] в дбф есть и работает по надобности.

Haz: SergKis пишет: Это понятно, но лог содержит, как правило, больше чем надо в дбф Это и останавливает. И в тоже время если лог детально структурироввть все реализовать можно. Поэтому пока текстовик под себя.

Haz: SergKis пишет: как ты различаешь, когда началась кор-ка строки и когда закончилась положительно, По выходу из редакции. По результатам.

Andrey: Вот ошибка у меня в проге: [pre2]Application: D:\Sklad4.Client\Sklad4win.exe Date: 03.04.2019 Time: 14:42:37 Time from start: 0 days 0 hours 0 mins 1 secs Error MGERROR/0 Window: unrecognized property 'MESSAGE'. Program terminated. Called from MSGMINIGUIERROR(99) in module: h_error.prg Called from SETPROPERTY(3785) in module: h_controlmisc.prg Called from (b)WAIT_WINDOW_MY(266) in module: Source\WaitWin.prg Called from _PROCESSINITPROCEDURE(1672) in module: h_windows.prg Called from _ACTIVATEWINDOW(1487) in module: h_windows.prg Called from WAIT_WINDOW_MY(315) in module: Source\WaitWin.prg Called from WAITWINDOWERROR(157) in module: Source\WaitWin.prg Called from COPYSERVERCLIENT(209) in module: Source\Copy2file.prg Called from MYCOPYFILE(412) in module: Source\main_check.prg Called from (b)HB_MACROBLOCK(0) [/pre2] Она у моих пользователей периодически возникает, а у меня нет. [pre2]STATIC PROCEDURE OnRelease() ThisWindow.Release DO MESSAGE LOOP RETURN[/pre2] Почему ?

SergKis: Andrey пишет Почему ? Если глянешь текст line 3785 это[pre2] OTHERWISE MsgMiniGuiError( "Window: unrecognized property '" + Arg2 + "'." ) END CASE [/pre2] на заданный Arg2 (нет такого в списке case), смотри что написано у тебя в Setproperty (...), если считаешь, что правильно, то поставь _LogFile(...) перед стокой MsgMiniGuiError(...) или перед Setproperty (...) ставь на вывод параметров и см. что приходит в параметрах у клиентов где валится.

SergKis: PS хотя явно видно приходит Arg2 = MESSAGE, т.е. это и пришло, где то попортился Arg2, если у тебя там другое

Andrey: Вопрос по ErrorLog.htm Не видно почему произошла допустим вот такая ошибка: [pre2]Time from start: 0 days 0 hours 28 mins 54 secs Error BASE/1003 Переменная не существует: KTARIF --------------------------------- Stack Trace --------------------------------- Called from ASK_TARIF(29) in module: Source\form_dogovor.prg Called from (b)HB_MACROBLOCK(0) Called from DIM_WRT_DBTYPEJ(3636) in module: Source\Tbrw_fCard.prg ..... --------------------- Internal Error Handling Information --------------------- Subsystem Call ....: BASE System Code .......: 1003 Default Status ....: .F. Description .......: Переменная не существует Operation .........: KTARIF Involved File .....: Dos Error Code ....: 0 [/pre2] По коду - запись в базу, ТАКОЕ поле есть в базе. Подозреваю что юзер переключал на другие окна или оставил на 1-2 минуты окно ввода, а у меня по таймеру переключение и отправка записей в инет и может АЛИАС базы сменился на это время. И нет в ErrorLog.htm при ошибке - какая текущая база была при ошибке ! Куда и какой код добавить чтобы при ошибке было видно какая текущая база ? Нужно наверное скрин экрана записывать в отдельную папку, когда происходит ошибка. А как это сделать, чтобы всем было удобно ? Для терминалки в хХарборе пишется экран в лог-файл. Это очень удобно. Анализ ошибок делаешь без юзера и где был вылет ОЧЕНЬ сложно понять. Может типа команды сделать SET ErrorLogPath TO GetStartUpFolder() + "\ErrorScreen\" Файлы можно обозначить так ErrorScreen001.png, ErrorScreen002.png

gfilatov2002: Andrey пишет: нет в ErrorLog.htm при ошибке - какая текущая база была при ошибке Такая информация есть в разделе "System Information" Current Work Area..: 2 Номера всех открытых рабочих областей и их алиасов можно взять из раздела "Detailed Work Area Items" и таким образом определить, имя текущей базы Andrey пишет: Может типа команды сделать SET ErrorLogPath TO Уже есть подобная команда, например: SET ERRORLOG TO "Z:\File.htm" Если требуются отдельные файлы для каждой произошедшей ошибки, то надо писать свой обработчик, готовые примеры есть в папке samples\Basic\Hmg_Error_2 и др.

Andrey: А как сделать запись экрана, когда происходит ошибка ?

PSP: Andrey пишет: А как сделать запись экрана, когда происходит ошибка ? Видимо gfilatov2002 пишет: надо писать свой обработчик

Dima: Andrey пишет: А как сделать запись экрана, когда происходит ошибка ? А ты уже спрашивал ранее и я тебе указал на папку с примером Minigui.

Andrey: Dima пишет: А ты уже спрашивал ранее и я тебе указал на папку с примером Minigui. \MiniGUI\SAMPLES\Applications\ScreenshotMaker\ Посмотрел пример. Там используется JPG.dll Не то. Как без дополнительных dll сделать запись экрана в картинку png или bmp ?

Dima: Andrey пишет: Как без дополнительных dll сделать запись экрана в картинку png или bmp https://stackoverflow.com/questions/60173096/hyperv-wmi-apply-snapshot-in-c-sharp PS я не знал например но погуглил , чего и тебе желаю

Andrey: Погуглил для FiveWin http://fivewin.com.br/index.php?/topic/13291-save-screen/ у самого класса WINDOW есть отличный метод для этого! Вы можете называть его любым наследуемым от него объектом, например TDialog! oDlg: saveToBmp ("C: \ path \ image_name.bmp") Он делает идеальный скриншот диалога! В МиниГуи тоже есть метод: [pre2]SaveAs Method Save Control or Window as BitMap file. SYNTAX METHOD <WindowName>.SaveAs( <BitMap> ) <ParentWindowName>.<ControlName>.SaveAs( <BitMap> )[/pre2] А как в ErrorSys.prg поймать имя окна где произошла ошибка ? Нужно это в FUNCTION DefError()

Dima: Andrey Вот чего нагуглил #include "BosTaurus.CH" . . BT_BitmapSaveFile(BT_BitmapCaptureDesktop(), "errorDESKTOP.png", 4)

Петр: Andrey пишет: Нужно это в FUNCTION DefError() На примере MiniGUI\SAMPLES\BASIC\Hmg_Error\Hmg_Error.prg STATIC FUNCTION DefError( oError ) ... //Html Arch to ErrorLog LOCAL HtmArch, xText //Save screen n := Ascan( _HMG_aFormHandles, GetActiveWindow() ) IF n > 0 oError:cargo := _HMG_aFormNames[ n ] DoMethod( oError:cargo, "SaveAs", hb_DirBase() + "screen.bmp" ) ENDIF ... и дальше ... Function ShowError ( oError ) ... x_body_erro += " File.................: " + oError:filename() + CRLF x_body_erro += " Form.................: " + oError:cargo + CRLF x_body_erro += " DOS error code.......: " + strvalue( oError:oscode() ) + CRLF ...



полная версия страницы