Автор | Сообщение |
|
| постоянный участник
|
Пост N: 6265
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.04.19 13:18. Заголовок: Предложения по ErrorLog.htm
Andrey пишет: цитата: | Есть большой лог ошибок 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 уровней. Может сделать бы стандартный компонент в МиниГуи для этого ? В виде дерева будет наверное очень удобно ! |
| Можно данную проблему решить улучшением HTML-верстки для ErrorSys.prg Ошибки будут сразу видны, а подробности свернутыми будут. Но каждый узел можно развернуть и посмотреть детально. Тогда на современных браузерах это будет выглядеть так - Firefox ErrorLog.htm Для просмотра нового ErrorLog2.htm - https://cloud.mail.ru/public/5aHd/2aTdiSeoy Правда в микрософтном IE выглядеть будет по старому, сразу развернутый, длинный предлинный... Как вам такая идея ? Что править в ErrorSys.prg я примерно знаю, есть у кого проконсультироваться.
|
|
|
Ответов - 34
, стр:
1
2
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 2417
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.04.19 14:01. Заголовок: Andrey пишет Как вам..
Andrey пишет По мне, лучше текстовый файл (передалываем для себя). Смотрим Ntepad3. Можно тут применить (реализовав поиск) hbedit с расцветкой для LANG_TXT Про выборки из txt файла - дело техники Т.е. иметь установку, какой ErrorLog.htm или ErrorLog.txt
|
|
|
|
| |
Пост N: 1470
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.04.19 16:32. Заголовок: SergKis пишет: По м..
SergKis пишет: цитата: | По мне, лучше текстовый файл (передалываем для себя |
| Так и есть. Также посещала мысль сделать ErrorView отдельной утилитой, а сам вывод в dbf. Нл пока переделал в текст под себя
|
|
|
|
| постоянный участник
|
Пост N: 2418
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.04.19 17:24. Заголовок: Haz пишет а сам выво..
Haz пишет Зачем ? Разве мало вариантов виеверов текстовых файлов. С clipper какой то перенесен в wvt и работает местами.
|
|
|
|
| |
Пост N: 1471
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.04.19 17:59. Заголовок: SergKis пишет: Заче..
SergKis пишет: По dbf проще и привычнее ставить фильтр по разделам лога, только по этому. Да и растащить по окнам не составит труда. В одном ошибка, в другом все установки, в третьем инфо по текущим запмсям Сейчас просто глазами в тексте ищу, и все нахожу. Идея возникла только после того как потребовалось понять не просто ошибку, а у какого пользователя она возникает, чтоб допросить с пристрастием как он это делает.
|
|
|
|
| постоянный участник
|
Пост N: 2420
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.04.19 18:26. Заголовок: Haz пишет По dbf про..
Haz пишет цитата: | По dbf проще и привычнее ставить фильтр по разделам лога |
| Это понятно, но лог содержит, как правило, больше чем надо в дбф. Т.е. процедура поедания лога[ов] в дбф есть и работает по надобности.
|
|
|
|
| |
Пост N: 1472
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.04.19 18:35. Заголовок: SergKis пишет: Это ..
SergKis пишет: цитата: | Это понятно, но лог содержит, как правило, больше чем надо в дбф |
| Это и останавливает. И в тоже время если лог детально структурироввть все реализовать можно. Поэтому пока текстовик под себя.
|
|
|
|
| |
Пост N: 1473
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.04.19 19:08. Заголовок: SergKis пишет: как ..
SergKis пишет: цитата: | как ты различаешь, когда началась кор-ка строки и когда закончилась положительно, |
| По выходу из редакции. По результатам.
|
|
|
|
| постоянный участник
|
Пост N: 6266
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.04.19 19:10. Заголовок: Вот ошибка у меня в ..
Вот ошибка у меня в проге: 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) Она у моих пользователей периодически возникает, а у меня нет. STATIC PROCEDURE OnRelease() ThisWindow.Release DO MESSAGE LOOP RETURN Почему ?
|
|
|
|
| постоянный участник
|
Пост N: 2423
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.04.19 19:33. Заголовок: Andrey пишет Почему ..
Andrey пишет Если глянешь текст line 3785 это OTHERWISE MsgMiniGuiError( "Window: unrecognized property '" + Arg2 + "'." ) END CASE на заданный Arg2 (нет такого в списке case), смотри что написано у тебя в Setproperty (...), если считаешь, что правильно, то поставь _LogFile(...) перед стокой MsgMiniGuiError(...) или перед Setproperty (...) ставь на вывод параметров и см. что приходит в параметрах у клиентов где валится.
|
|
|
|
| постоянный участник
|
Пост N: 2424
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.04.19 19:36. Заголовок: PS хотя явно видно п..
PS хотя явно видно приходит Arg2 = MESSAGE, т.е. это и пришло, где то попортился Arg2, если у тебя там другое
|
|
|
|
| постоянный участник
|
Пост N: 6952
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.05.21 22:02. Заголовок: Вопрос по ErrorLog.h..
Вопрос по ErrorLog.htm Не видно почему произошла допустим вот такая ошибка: 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 По коду - запись в базу, ТАКОЕ поле есть в базе. Подозреваю что юзер переключал на другие окна или оставил на 1-2 минуты окно ввода, а у меня по таймеру переключение и отправка записей в инет и может АЛИАС базы сменился на это время. И нет в ErrorLog.htm при ошибке - какая текущая база была при ошибке ! Куда и какой код добавить чтобы при ошибке было видно какая текущая база ? Нужно наверное скрин экрана записывать в отдельную папку, когда происходит ошибка. А как это сделать, чтобы всем было удобно ? Для терминалки в хХарборе пишется экран в лог-файл. Это очень удобно. Анализ ошибок делаешь без юзера и где был вылет ОЧЕНЬ сложно понять. Может типа команды сделать SET ErrorLogPath TO GetStartUpFolder() + "\ErrorScreen\" Файлы можно обозначить так ErrorScreen001.png, ErrorScreen002.png
|
|
|
|
|
| moderator
|
Пост N: 1859
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.05.21 09:59. Заголовок: Andrey пишет: нет ..
Andrey пишет: цитата: | нет в ErrorLog.htm при ошибке - какая текущая база была при ошибке |
| Такая информация есть в разделе "System Information" Номера всех открытых рабочих областей и их алиасов можно взять из раздела "Detailed Work Area Items" и таким образом определить, имя текущей базы Andrey пишет: цитата: | Может типа команды сделать SET ErrorLogPath TO |
| Уже есть подобная команда, например: цитата: | SET ERRORLOG TO "Z:\File.htm" |
| Если требуются отдельные файлы для каждой произошедшей ошибки, то надо писать свой обработчик, готовые примеры есть в папке samples\Basic\Hmg_Error_2 и др.
|
|
|
|
| постоянный участник
|
Пост N: 6953
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.05.21 10:10. Заголовок: А как сделать запис..
А как сделать запись экрана, когда происходит ошибка ?
|
|
|
|
| постоянный участник
|
Пост N: 1612
Зарегистрирован: 27.01.07
|
|
Отправлено: 14.05.21 11:45. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как сделать запись экрана, когда происходит ошибка ? |
| Видимо gfilatov2002 пишет: цитата: | надо писать свой обработчик |
|
|
|
|
|
| |
Пост N: 7356
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.05.21 11:55. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как сделать запись экрана, когда происходит ошибка ? |
| А ты уже спрашивал ранее и я тебе указал на папку с примером Minigui.
|
|
|
|
| постоянный участник
|
Пост N: 6956
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.05.21 13:08. Заголовок: Dima пишет: А ты уж..
Dima пишет: цитата: | А ты уже спрашивал ранее и я тебе указал на папку с примером Minigui. \MiniGUI\SAMPLES\Applications\ScreenshotMaker\ |
| Посмотрел пример. Там используется JPG.dll Не то. Как без дополнительных dll сделать запись экрана в картинку png или bmp ?
|
|
|
|
| |
Пост N: 7371
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.21 14:20. Заголовок: Andrey пишет: Как б..
|
|
|
|
| постоянный участник
|
Пост N: 6957
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.05.21 15:05. Заголовок: Погуглил для FiveWin..
Погуглил для FiveWin http://fivewin.com.br/index.php?/topic/13291-save-screen/ у самого класса WINDOW есть отличный метод для этого! Вы можете называть его любым наследуемым от него объектом, например TDialog! oDlg: saveToBmp ("C: \ path \ image_name.bmp") Он делает идеальный скриншот диалога! В МиниГуи тоже есть метод: SaveAs Method Save Control or Window as BitMap file. SYNTAX METHOD <WindowName>.SaveAs( <BitMap> ) <ParentWindowName>.<ControlName>.SaveAs( <BitMap> ) А как в ErrorSys.prg поймать имя окна где произошла ошибка ? Нужно это в FUNCTION DefError()
|
|
|
|
| |
Пост N: 7372
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.21 15:35. Заголовок: Andrey Вот чего наг..
Andrey Вот чего нагуглил #include "BosTaurus.CH" . . BT_BitmapSaveFile(BT_BitmapCaptureDesktop(), "errorDESKTOP.png", 4)
|
|
|
|
| постоянный участник
|
Пост N: 1691
Зарегистрирован: 09.10.06
|
|
Отправлено: 23.05.21 20:14. Заголовок: Andrey пишет: Нужно..
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 ...
|
|
|
|
| постоянный участник
|
Пост N: 6958
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.05.21 21:01. Заголовок: Спасибо Петр ! :sm3..
Спасибо Петр ! Не просмотрел этот пример...
|
|
|
|
|
| постоянный участник
|
Пост N: 6959
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.05.21 21:55. Заголовок: Вот так сделал Error..
Вот так сделал ErrorLog.htm:
|
|
|
|
| постоянный участник
|
Пост N: 6960
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.05.21 22:47. Заголовок: Dima пишет: Вот чег..
Dima пишет: цитата: | Вот чего нагуглил #include "BosTaurus.CH" |
| Спасибо Дима ! Получилось отлично !
|
|
|
|
| постоянный участник
|
Пост N: 6961
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.05.21 01:17. Заголовок: Хоть пинайте меня, н..
Хоть пинайте меня, но всё равно HMG_Alert() сбоит... Прицепил к своему большому проекту исправленный ErrorSys2.prg из ErrorLog_2 И при ошибке получаю ПРОСТО вылет из программы, без показа окна ошибки. В ErrorLog.htm ошибка сохраняется и скрин экрана тоже есть. Вот такая ошибка: Error MGERROR/0 Control: Say_02 Of oDlg Not defined. Program terminated. --------------------------------- Stack Trace --------------------------------- Called from MSGMINIGUIERROR(0) Called from VERIFYCONTROLDEFINED(0) Called from SETPROPERTY(0) Called from (b)SHOWERROR(254) in module: errorsys2.prg Called from DO_WINDOWEVENTPROCEDURE(0) Called from FILLDLG(0) Called from HMG_ALERT(0) Called from SHOWERROR(267) in module: errorsys2.prg Called from DEFERROR(150) in module: errorsys2.prg Called from (b)ERRORSYS(66) in module: errorsys2.prg Called from MYPRINTCARD(3064) in module: tbrw_fcard.prg Called from (b)MYMENUBUTTONCARD(2912) in module: tbrw_fcard.prg Called from (b)METRO3BUTTON(53) in module: metro3button.prg ...... Вот код: Скрытый текст
SET MSGALERT FONTCOLOR TO WHITE IF Hb_LangSelect() == "ru.RU1251" aOptions := { '&Просмотр ошибки', '&Выход' } cMsg := "****** Произошла ошибка в программе ! ******;" cMsg += "*** НЕОБХОДИМО СВЯЗАТЬСЯ С ПРОГРАММИСТОМ ***;;" IF M->nProgLang == 3 // укр. aOptions := {'&Перегляд помилки', '&Вихід'} cMsg := " Сталася помилка в програмі ! ;" cMsg += "*** НЕОБХІДНО КОНТАКТИ З програмістів ***;;" ENDIF ELSE aOptions := { '&View error', '&Exit'} cMsg := "A Run-Time Error Has Occured !;" cMsg += "*** IT IS NECESSARY TO CONTACT THE PROGRAMMER ***;;" ENDIF bInit := {|| SetProperty("oDlg", "Say_01" , "FontColor", YELLOW ) ,; SetProperty("oDlg", "Say_01" , "Alignment", "CENTER" ) ,; SetProperty("oDlg", "Say_02" , "FontColor", YELLOW ) ,; SetProperty("oDlg", "Say_02" , "Alignment", "CENTER" ) ,; This.TopMost := .T. } ............ HMG_Alert_MaxLines( 35 ) // это Григорий добавил ! IF HMG_Alert( cMsg, aOptions, "Program Error", nDefBtn, "iStop64", 64, aColors, bInit, .T. ) == 1 ShellExecute( , 'open', _HMG_ErrorLogFile, , , SW_SHOWNORMAL) ENDIF ....
| Если ставлю просто так: bInit := {|| This.TopMost := .T. } То окно ошибки появляется без проблем ! Если оставить ТОЛЬКО строки: bInit := {|| SetProperty("oDlg", "Say_01" , "FontColor", YELLOW ) ,; SetProperty("oDlg", "Say_01" , "Alignment", "CENTER" ) ,; This.TopMost := .T. } То окно ошибки тоже появляется, только весь текст ошибки становиться жёлтым и по центру, вот так: Хотя задаю белый фонт - SET MSGALERT FONTCOLOR TO WHITE Почему так происходит ? Как правильно делать, чтобы не было вылетов ?
|
|
|
|
| постоянный участник
|
Пост N: 3733
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.05.21 01:38. Заголовок: Andrey пишет Хоть пи..
Andrey пишет цитата: | Хоть пинайте меня, но всё равно HMG_Alert() сбоит... |
| Что тебя пинать, сам ходишь по кругу с не полученными для себя ответами - какие окна доступны в этот момент (не разрушены) - какие контролы на окнах доступны в этот момент (не разрушены) - есть ли окно main (не разрушено) для hmg_Alert() это важно Замени ф-ии на MsgStop(), MsgYesNo()
|
|
|
|
| moderator
|
Пост N: 1861
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.05.21 10:17. Заголовок: Andrey пишет: bInit..
Andrey пишет: цитата: | bInit := {|| SetProperty("oDlg", "Say_01" , "FontColor", YELLOW ) ,; SetProperty("oDlg", "Say_01" , "Alignment", "CENTER" ) ,; This.TopMost := .T. } |
| Запиши этот блок инициализации следующим образом: bInit := {|| iif( GetControlType( "Say_01", "oDlg" ) == "EDIT", , ( ; SetProperty( "oDlg", "Say_01", "FontColor", YELLOW ), ; SetProperty( "oDlg", "Say_01", "Alignment", "CENTER" ), ; SetProperty( "oDlg", "Say_02", "FontColor", YELLOW ), ; SetProperty( "oDlg", "Say_02", "Alignment", "CENTER" ) ) ), ; This.TopMost := .T. } и посмотри на результат
|
|
|
|
| постоянный участник
|
Пост N: 6962
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.05.21 11:34. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Запиши этот блок инициализации следующим образом: |
| Записал. Получается аналогично такому результату - bInit := {|| This.TopMost := .T. } Т.е. окно ошибки появляется, только белым цветом и первые 2 строчки не по центру, отбивка влево. Первые две строчки должны быть же ЖЕЛТЫМИ и по центру ! Сделал так: cMsg := " Сталася помилка в програмі ! " + CRLF cMsg += "*** НЕОБХІДНО КОНТАКТИ З програмістів ***" + CRLF + CRLF cMsg += iif( _lShowDetailError(), cErrorMessage, ErrorMessage( oError ) ) И вывожу отладку в лог-файл, строчек ошибок 43. Почему ломается на "Say_02" ? SergKis пишет: цитата: | - есть ли окно main (не разрушено) для hmg_Alert() это важно |
| Есть main окно. SergKis пишет: цитата: | - какие контролы на окнах доступны в этот момент (не разрушены) |
| Они очень плохо выглядят. Хочется нормальное окно с ошибкой. SergKis пишет: цитата: | - какие контролы на окнах доступны в этот момент (не разрушены) |
| Как это сделать в bInit := {|| ????
|
|
|
|
| постоянный участник
|
Пост N: 6967
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.06.21 18:36. Заголовок: Haz пишет: я Сам см..
Haz пишет: цитата: | я Сам смотрю по логам, плюс прилетает на почту сообщение ( опционально ) |
| Как такое реализовать такое же у себя ?
|
|
|
|
| |
Пост N: 1694
Зарегистрирован: 20.02.11
|
|
Отправлено: 08.06.21 19:10. Заголовок: Andrey пишет: Как т..
Andrey пишет: цитата: | Как такое реализовать такое же у себя |
| Ну это совсем просто 1.Регистрируешь ящик, через который будешь слать письма 2.Подравляешь Errorsys.prg static переменная bPostErrorBlock := NIL и функция ее установки SetPostErrorBlock( bBlock ). Перед завершением проверяешь если тип переменной блок то выполняешь и выходишь 3. Этот блок тупо берет лог и через hb_sendMail() шлет куда указал используя ящик из п1 дальше нюансы Если только слать почту то это все, НО если хочется большего, пишешь свой ReadMail() который читает яшик п1 . Если прилетело "хитрое" письмо ( с кодовой последовательностью в теле ) , то тут все что угодно Можно отправить в письме hbr файл и при получении он выполниться . Это может быть обработка по базам, переиндексация , упаковка, модификация структур подмена других hbr проекта , вобщем тут только фонтазия ограничивает. У меня сервисные операции по базам запускаются
|
|
|
|
| |
Пост N: 7388
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.06.21 19:18. Заголовок: Haz пишет: 3. Этот ..
Haz пишет: цитата: | 3. Этот блок тупо берет лог и через hb_sendMail() |
| У него не срослось с этой функцией + SSL
|
|
|
|
| |
Пост N: 1696
Зарегистрирован: 20.02.11
|
|
Отправлено: 08.06.21 19:20. Заголовок: Dima пишет: У него ..
Dima пишет: цитата: | У него не срослось с этой функцией + SSL |
|
ну тогда или растить дальше или использовать sendmail.exe
|
|
|
|
|
| |
Пост N: 7389
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.06.21 19:38. Заголовок: Haz пишет: или испо..
|
|
|
|
| постоянный участник
|
Пост N: 6969
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.06.21 19:58. Заголовок: Dima пишет: У него ..
Dima пишет: цитата: | У него не срослось с этой функцией + SSL |
| Нет, есть такая работа. Свой "почтовик" написан на МиниГуи. Мне Григорий ещё в 2014 году помог его сделать. До сих пор у некоторых юзеров работает...
|
|
|
|
| постоянный участник
|
Пост N: 1614
Зарегистрирован: 27.01.07
|
|
Отправлено: 08.06.21 21:28. Заголовок: Вот еще вариант: htt..
|
|
|
Ответов - 34
, стр:
1
2
All
[только новые]
|
|