Clipper On Line • Ver Tópico - Outra forma de errorsys.

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

 

Outra forma de errorsys.

Mensagempor JoséQuintas » 22 Jul 2018 10:43

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

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Outra forma de errorsys.

Mensagempor JoséQuintas » 22 Jul 2018 10:50

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

#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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Outra forma de errorsys.

Mensagempor JoséQuintas » 22 Jul 2018 10:55

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Outra forma de errorsys.

Mensagempor JoséQuintas » 28 Jul 2018 08:49

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Outra forma de errorsys.

Mensagempor JoséQuintas » 05 Ago 2018 23:06

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Outra forma de errorsys.

Mensagempor JoséQuintas » 06 Ago 2018 19:18

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 15 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro