Форум » 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

Andrey: Спасибо Петр ! Не просмотрел этот пример...

Andrey: Вот так сделал ErrorLog.htm:

Andrey: Dima пишет: Вот чего нагуглил #include "BosTaurus.CH" Спасибо Дима ! Получилось отлично !


Andrey: Хоть пинайте меня, но всё равно HMG_Alert() сбоит... Прицепил к своему большому проекту исправленный ErrorSys2.prg из ErrorLog_2 И при ошибке получаю ПРОСТО вылет из программы, без показа окна ошибки. В ErrorLog.htm ошибка сохраняется и скрин экрана тоже есть. Вот такая ошибка: [pre2]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 ......[/pre2] Вот код: [pre2] 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 ....[/pre2] Если ставлю просто так: bInit := {|| This.TopMost := .T. } То окно ошибки появляется без проблем ! Если оставить ТОЛЬКО строки: [pre2]bInit := {|| SetProperty("oDlg", "Say_01" , "FontColor", YELLOW ) ,; SetProperty("oDlg", "Say_01" , "Alignment", "CENTER" ) ,; This.TopMost := .T. } [/pre2] То окно ошибки тоже появляется, только весь текст ошибки становиться жёлтым и по центру, вот так: Хотя задаю белый фонт - SET MSGALERT FONTCOLOR TO WHITE Почему так происходит ? Как правильно делать, чтобы не было вылетов ?

SergKis: Andrey пишет Хоть пинайте меня, но всё равно HMG_Alert() сбоит... Что тебя пинать, сам ходишь по кругу с не полученными для себя ответами - какие окна доступны в этот момент (не разрушены) - какие контролы на окнах доступны в этот момент (не разрушены) - есть ли окно main (не разрушено) для hmg_Alert() это важно Замени ф-ии на MsgStop(), MsgYesNo()

gfilatov2002: Andrey пишет: bInit := {|| SetProperty("oDlg", "Say_01" , "FontColor", YELLOW ) ,; SetProperty("oDlg", "Say_01" , "Alignment", "CENTER" ) ,; This.TopMost := .T. } Запиши этот блок инициализации следующим образом: [pre] 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. } [/pre] и посмотри на результат

Andrey: gfilatov2002 пишет: Запиши этот блок инициализации следующим образом: Записал. Получается аналогично такому результату - bInit := {|| This.TopMost := .T. } Т.е. окно ошибки появляется, только белым цветом и первые 2 строчки не по центру, отбивка влево. Первые две строчки должны быть же ЖЕЛТЫМИ и по центру ! Сделал так:[pre2] cMsg := " Сталася помилка в програмі ! " + CRLF cMsg += "*** НЕОБХІДНО КОНТАКТИ З програмістів ***" + CRLF + CRLF cMsg += iif( _lShowDetailError(), cErrorMessage, ErrorMessage( oError ) )[/pre2] И вывожу отладку в лог-файл, строчек ошибок 43. Почему ломается на "Say_02" ? SergKis пишет: - есть ли окно main (не разрушено) для hmg_Alert() это важно Есть main окно. SergKis пишет: - какие контролы на окнах доступны в этот момент (не разрушены) Они очень плохо выглядят. Хочется нормальное окно с ошибкой. SergKis пишет: - какие контролы на окнах доступны в этот момент (не разрушены) Как это сделать в bInit := {|| ????

Andrey: Haz пишет: я Сам смотрю по логам, плюс прилетает на почту сообщение ( опционально ) Как такое реализовать такое же у себя ?

Haz: Andrey пишет: Как такое реализовать такое же у себя Ну это совсем просто 1.Регистрируешь ящик, через который будешь слать письма 2.Подравляешь Errorsys.prg static переменная bPostErrorBlock := NIL и функция ее установки SetPostErrorBlock( bBlock ). Перед завершением проверяешь если тип переменной блок то выполняешь и выходишь 3. Этот блок тупо берет лог и через hb_sendMail() шлет куда указал используя ящик из п1 дальше нюансы Если только слать почту то это все, НО если хочется большего, пишешь свой ReadMail() который читает яшик п1 . Если прилетело "хитрое" письмо ( с кодовой последовательностью в теле ) , то тут все что угодно Можно отправить в письме hbr файл и при получении он выполниться . Это может быть обработка по базам, переиндексация , упаковка, модификация структур подмена других hbr проекта , вобщем тут только фонтазия ограничивает. У меня сервисные операции по базам запускаются

Dima: Haz пишет: 3. Этот блок тупо берет лог и через hb_sendMail() У него не срослось с этой функцией + SSL

Haz: Dima пишет: У него не срослось с этой функцией + SSL ну тогда или растить дальше или использовать sendmail.exe

Dima: Haz пишет: или использовать sendmail.exe Или Curl.exe https://stackoverflow.com/questions/14722556/using-curl-to-send-email

Andrey: Dima пишет: У него не срослось с этой функцией + SSL Нет, есть такая работа. Свой "почтовик" написан на МиниГуи. Мне Григорий ещё в 2014 году помог его сделать. До сих пор у некоторых юзеров работает...

PSP: Вот еще вариант: https://www.inveigle.net/cmail



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