Outra forma de errorsys.

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Outra forma de errorsys.

Mensagem por JoséQuintas »

Por causa da tranqueira do Flagship, acabei descobrindo uma nova forma de usar minha errorsys.

Código: Selecionar todos

   PUBLIC OldHandler
   OldHandler := ErrorBlock()
   ErrorBlock( { | e | JoseQuintasError( e ), Eval( OldHandler, e ) } )
E acabei descobrindo "erros ocultos".
Error on 19/07/2018 20:34:18
Alias:
OS: Linux ELF & Glibc-2.1 Release 2.2.17-14cl #1 Wed Nov 1 20:41:39 EST 2000
Compiler: FlagShip 4.48.7452 (1024 users)


database arqncm.dbf;is multiply opened in different work areas: NFE0702.PRG, module NFE0702 line 23
Called from NFE0702(23)
Called from F_IMDT(247)
Called from F_LOTREV(77)
Called from NFE0600(36)
Called from MAIN(209)
Resumindo:
chama as duas errorsys em seguida, sendo que a minha apenas registra o erro e nada mais.

No erro acima, o Flagship nem sequer mostrava mensagem, continuava normalmente.
Ao colocar desse jeito, o erro foi registrado.
Significa que a errorsys do Flagship é chamada, mas continua normalmente.

Pode ser uma solução para aqueles que tem errorsys diferente que bagunça as mensagens de erro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Outra forma de errorsys.

Mensagem por JoséQuintas »

A errorsys enxuta, levemente alterada pro fórum aceitar o post.

Código: Selecionar todos

#include "error.ch"

#command ? <list,...>   =>  ?? hb_Eol() ; ?? <list>
#command ?? <list,...>  =>  OutErr(<list>)

FUNCTION JoseQuintasError( e )

   LOCAL cMessage, nCont

   cMessage := ErrorMessage(e)
   IF ! Empty( e:OsCode )
      cMessage += " (DOS Error " + Ltrim( Str( e:OsCode ) ) + ") "
   ENDIF
   Errorsys_WriteErrorLog( , 1 ) // com id maquina
   Errorsys_WriteErrorLog( cMessage )
   nCont := 2
   DO WHILE ( ! Empty( ProcName( nCont ) ) )
      cMessage := "Called from " + Trim( ProcName( nCont ) ) + "(" + Ltrim( Str( ProcLine( nCont ) ) ) + ")  "
      Errorsys_WriteErrorLog( cMessage )
      nCont++
   ENDDO
   Errorsys_WriteErrorLog( Replicate( "-", 80 ) )

   RETURN NIL

STATIC FUNCTION ErrorMessage( e )

   LOCAL cMessage := ""

   IF ( ValType( e:SubCode ) == "N" )
      cMessage += ( Ltrim(Str( e:SubCode ) ) )
   ELSE
      cMessage += "/???"
   ENDIF

   IF ( ValType( e:Description ) == "C" )
      cMessage += ( "  " + e:Description )
   ENDIF

   IF ! Empty( e:Filename )
      cMessage += (": " + e:Filename )
   ELSEIF ! Empty( e:Operation )
      cMessage += ( ": " + e:Operation )
   ENDIF

   RETURN cMessage

FUNCTION Errorsys_WriteErrorLog( cText, nDetail )

   LOCAL nHandle, cFileName, nCont, nCont2

   IF pCount() < 2
      nDetail := 0
   ENDIF
   IF pCount() < 1
      cText := ""
   ENDIF

   IF nDetail > 0
      Errorsys_WriteErrorLog()
      Errorsys_WriteErrorLog( "Error on " + Dtoc( Date() ) + " " + Time() )
      Errorsys_WriteErrorLog( "OS: " + OS() )
      Errorsys_WriteErrorLog( "Compiler: " + Version() )
      Errorsys_WriteErrorLog( "Folder: " + CurDir() )
      Errorsys_WriteErrorLog( "Alias:  " + Alias() )
      Errorsys_WriteErrorLog( "User Name: " + AppUserName() )
      Errorsys_WriteErrorLog()
   ENDIF
   cFileName := "hb_out.log"
   IF ! File( cFileName )
      nHandle := fCREATE( cFileName )
      fClose( nHandle )
   ENDIF

   nHandle := fOpen( cFileName, 1 )
   fSeek( nHandle, 0, 2 )
   fWrite( nHandle, cText + Space(2) + hb_Eol() )
   IF nDetail > 1
      nCont  := 2
      nCont2 := 0
      DO WHILE nCont2 < 5
         IF Empty( ProcName( nCont ) )
            nCont2++
         ELSE
            cText := "Called from " + Trim( ProcName( nCont ) ) + "(" + Ltrim( Str( ProcLine( nCont ) ) ) + ")  "
            fWrite( nHandle, cText + hb_Eol() )
         ENDIF
         nCont++
      ENDDO
      fWrite( nHandle, hb_Eol() )
   ENDIF
   fClose( nHandle )

   RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Outra forma de errorsys.

Mensagem por JoséQuintas »

Ah sim... mandar por email?
Rotina de erros não é pra isso.
E em Flagship/Linux nem sei se os bloqueios vão permitir alguma coisa.

Mas uma vez registrado em hb_out.log, agora é pensar em como enviar por email, e como "limpar" o log.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Outra forma de errorsys.

Mensagem por JoséQuintas »

Comentário extra sobre essa errorsys:

Lembram da pergunta Abort/Retry?

A cada retry, é um registro de erro.
A rotina adicional apenas registra, quem faz tudo é a errorsys normal.
Então... a cada entrada que faz na errorsys, primeiro registra o erro.
E não afeta em nada o funcionamento normal da errorsys.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Outra forma de errorsys.

Mensagem por JoséQuintas »

Foi instalado o Harbour 3.2, e diz que falta a parte de conexão segura.
Não sei se o Harbour 3.4 também obrigaria, porque no Windows não.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Outra forma de errorsys.

Mensagem por JoséQuintas »

Uma coisa é o Harbour 3.4 com Windows, que estou acostumado e faço tudo tranquilamente, até mesmo gerar do zero, sem nada dessas tranqueiras.
E que também dá pra baixar pronto.

Outra coisa é o ambiente Linux, com acesso limitado, sem nem mesmo saber gerar o Harbour.

Nesse caso a coisa pega, ou vém pronto funcionando, ou nada feito.

Não uso nem SSL nem CURL, e envio emails no Windows.
Se no Linux está obrigando a ter isso, sem chance.

Se depender de mim, seria passar o mais rápido possível pra Harbour, e abandonar o Linux, assim vou poder mexer tranquilamente.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder