Enviar arq. de erro por email.

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Enviar arq. de erro por email.

Mensagem por marcos.gurupi »

Alguem poderia compartilhar algo a respeito, quero saber quando o meu sistema ficar em erro receber o arq. por email. Alguem poderia postar alguma coisa parecida?

Marcos Roberto
Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Enviar arq. de erro por email.

Mensagem por sygecom »

Está usando algum visual grafico ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Enviar arq. de erro por email.

Mensagem por marcos.gurupi »

Estou usando Hwgui 2.17

Marcos roberto
Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Enviar arq. de erro por email.

Mensagem por sygecom »

Então pode anexar esse ErroSys.prg junto com seu sistema. Se faltar alguma coisa é só prender o grito.

Nota: Tem que linkar a TIP.LIB
Anexos
errorsys.prg
(6.32 KiB) Baixado 294 vezes
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Enviar arq. de erro por email.

Mensagem por marcos.gurupi »

Obrigado vou fazer.

Marcos Roberto
Marcos Roberto
NetService Software
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Enviar arq. de erro por email.

Mensagem por marcos.gurupi »

Leonardo ao tentar compilar com xhb 1.0 hwgui 2.17 ocorreu os seguintes erros:

Código: Selecionar todos

C:\xHWGUI\XHARBOUR\bin\harbour.exe -iinclude;C:\xHWGUI\XHARBOUR\include -n -q0 -w -es2 -gc0   source\errorsys.prg -oobj\b32\errorsys.c
source\errorsys.prg(80) Warning W0001  Ambiguous reference: 'CLOGFILE'
source\errorsys.prg(82) Warning W0001  Ambiguous reference: 'CLOGFILE'
source\errorsys.prg(84) Warning W0001  Ambiguous reference: 'CLOGFILE'
source\errorsys.prg(186) Warning W0001  Ambiguous reference: 'ODLGHABLA'
source\errorsys.prg(189) Warning W0001  Ambiguous reference: 'AFILES'
source\errorsys.prg(190) Warning W0001  Ambiguous reference: 'AFILES'
Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Enviar arq. de erro por email.

Mensagem por asimoes »

Olá Leonardo,

Verificando o arquivo errorsys.prg que você anexou focaram faltando algumas funções:

MyExitProc2()
inetestaconectada()
Fim_Run()
MsgRun()

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Enviar arq. de erro por email.

Mensagem por sygecom »

marcos.gurupi escreveu:Leonardo ao tentar compilar com xhb 1.0 hwgui 2.17 ocorreu os seguintes erros:
Olá Marcos,
Não são erros são apenas avisos e isso não vai impedir nada, mas por todos os casos fiz mais um ajuste que vai elimiar os avisos. Esta em anexo.
asimoes escreveu:Verificando o arquivo errorsys.prg que você anexou focaram faltando algumas funções:

MyExitProc2()
inetestaconectada()
Fim_Run()
MsgRun()
Olá Asimões,
A Função MyExitProc2() vou pode mudar por: PostQuitMessage(0)
A Função inetestaconectada() serve para vereficar se existe conexão com Internet e você pode pegar nesse link: viewtopic.php?f=43&t=6758
A Função MSGRUN() e FIM_RUN() pode pegar abaixo:

Código: Selecionar todos

*********************
FUNCTION MsgRun(cMsg)
*********************
PRIVATE oTimHabla
if cMsg=Nil
   cMsg:="Aguarde em processamento...."
endif

INIT DIALOG oDlgHabla TITLE "Processando..." NOEXIT NOEXITESC;
AT 0,0 SIZE 485,80 ;
STYLE DS_CENTER + WS_VISIBLE + WS_CAPTION + WS_SYSMENU;
COLOR Rgb(255, 255, 255)

@ 45,20 SAY oTimHabla CAPTION cMsg SIZE 465,20;
FONT HFont():Add( "Arial", 0 ,-15,550,255 );
BACKCOLOR Rgb(255, 255, 255)

ACTIVATE DIALOG oDlgHabla NOMODAL

Return Nil

****************
Function Fim_Run
****************
IF oDlgHabla#NIL
   oDlgHabla:CLOSE()
ENDIF
Return Nil
Anexos
errorsys.prg
(6.34 KiB) Baixado 210 vezes
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Enviar arq. de erro por email.

Mensagem por marcos.gurupi »

Mas mesmo com os "simples" avisos as libs nao foram geradas. Mas ok vou fazer as alteracoes e reporto logo mais.

Marcos Roberto
Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Enviar arq. de erro por email.

Mensagem por sygecom »

Marcos,
Você tem que linkar o ErrorSys.prg no seu aplicativo e não na LIB da Hwgui.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Enviar arq. de erro por email.

Mensagem por marcos.gurupi »

Ah eh!!! Foi mal. :)Pos

Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Enviar arq. de erro por email.

Mensagem por sygecom »

Tranquilo, qualquer coisa prende o grito.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
gilbertosilverio
Usuário Nível 3
Usuário Nível 3
Mensagens: 339
Registrado em: 18 Jan 2009 10:39
Localização: Ribeirao Pires - SP

Re: Enviar arq. de erro por email.

Mensagem por gilbertosilverio »

Ola Leonardo,

Fiz uma pequena alteração em sua rotina, errorsys.prg, pois pelo hb_sendemail, nao tava conseguindo enviar os e-mais.

Localmente ela funciona, mais se acesso o sistema via rede, ela da uma mensagem de erro do windows, erro 9003 muitas chamadas recursivas, e nao envia o email.

Voce poderia da uma olhada onde estou errando.

Estou testando GWT + HGUI + XHB 1.1 e WVW + HWGUI + XHB 1.1

Grato.

Código: Selecionar todos

#include "common.ch"
#include "error.ch"
#include "windows.ch"
#include "guilib.ch"

STATIC LogInitialPath := ""

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

PROCEDURE ErrorSys
   ErrorBlock( { | oError | DefError( oError ) } )
   LogInitialPath := "\" + CurDir() + IIf( Empty( CurDir() ), "", "\" )
RETURN

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 

FUNCTION DefError( oError )
   LOCAL cDOSError
   LOCAL n
   PRIVATE cMESSAGE, cNOME:=DTOS(DATE())+StrTran( TIME(), ":", "_")+".log"

   IF oError:genCode == EG_ZERODIV
      RETURN 0
   ENDIF
   IF oError:genCode == EG_OPEN .AND. ;
      oError:osCode == 32 .AND. ;
      oError:canDefault
      NetErr( .T. )
      RETURN .F.
   ENDIF
   IF oError:genCode == EG_APPENDLOCK .AND. ;
      oError:canDefault
      NetErr( .T. )
      RETURN .F.
   ENDIF
   cMessage := ErrorMessage( oError )
   IF ! Empty( oError:osCode )
      cDOSError := "(DOS Error " + LTrim( Str( oError:osCode ) ) + ")"
   ENDIF
   IF ! Empty( oError:osCode )
      cMessage += " " + cDOSError
   ENDIF
   n := 2
   WHILE ! Empty( ProcName( n ) )
      #ifdef __XHARBOUR__
         cMessage += Chr( 13 ) + Chr( 10 ) + "Called from " + ProcFile( n ) + "->" + ProcName( n ) + "(" + AllTrim( Str( ProcLine( n ++ ) ) ) + ")"
      #else
         cMessage += Chr( 13 ) + Chr( 10 ) + "Called from " + ProcName( n ) + "(" + AllTrim( Str( ProcLine( n ++ ) ) ) + ")"
      #endif
   ENDDO

   cMessage += Chr( 13 ) + Chr( 10 )
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Data e Hora........: ' + dtoc( date() ) + " - " + time()
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Empresa............: ' + "empresa"
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Sistema/Atualizacao: ' + "sistema"
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Usuario do Sistema.: ' + netname(.t.)
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Nome do Executavel.: ' + hb_cmdargargv()
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Nome do Micro......: ' + netname() + " - Nome Usuario.: "+ netname(.t.)
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Memoria Disponivel.: ' + alltrim(str( Memory(0) )) + ' - Espaço em Disco....: ' + alltrim(str( DiskSpace() ))
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Pasta de Diretorio.: ' + curdir()
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Sistema Operacional: ' + os()
   cMessage += Chr( 13 ) + Chr( 10 ) + 'Versão xHarbour..: ' + hwg_version( 1 )

   IF MSGYESNO([Encontrado erro no sistema, Voce deseja encerrar o programa],[Por favor Atenção])
      MemoWrit( LogInitialPath + cNOME, cMessage )
      ErrorPreview( cMessage )
      EndWindow()

      ENVIA_ERRO( cNOME )

      QUIT
   ELSE
      MemoWrit( LogInitialPath + cNOME, cMessage )
      ErrorPreview( cMessage )
      EndWindow()
      PostQuitMessage( 0 )

      ENVIA_ERRO( cNOME )

   ENDIF

RETURN .F.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

FUNCTION ErrorMessage( oError )
   cMessage := IIf( oError:severity > ES_WARNING, "Error", "Warning" ) + " "
   IF ISCHARACTER( oError:subsystem )
      cMessage += oError:subsystem()
   ELSE
      cMessage += "???"
   ENDIF
   IF ISNUMBER( oError:subCode )
      cMessage += "/" + LTrim( Str( oError:subCode ) )
   ELSE
      cMessage += "/???"
   ENDIF
   IF ISCHARACTER( oError:description )
      cMessage += "  " + oError:description
   ENDIF
   DO CASE
   CASE ! Empty( oError:filename )
      cMessage += ": " + oError:filename
   CASE ! Empty( oError:operation )
      cMessage += ": " + oError:operation
   ENDCASE
RETURN cMessage

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

FUNCTION hwg_WriteLog( cText, fname )
   LOCAL nHand
   fname := LogInitialPath + IIf( fname == Nil, "a.log", fname )
   IF ! File( fname )
      nHand := FCreate( fname )
   ELSE
      nHand := FOpen( fname, 1 )
   ENDIF
   FSeek( nHand, 0, 2 )
   FWrite( nHand, cText + Chr( 10 ) )
   FClose( nHand )
RETURN nil

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

FUNCTION ErrorPreview( cMess )
   LOCAL oDlg, oEdit

   INIT DIALOG oDlg TITLE "Erro No Sistema  " ;
       ICON HIcon():AddResource(1004)  ;
       AT 0,0 SIZE 500,500 ;
       FONT HFont():Add( '',0,-13,400,,,) CLIPPER  NOEXIT ;
       STYLE DS_CENTER +WS_SYSMENU+WS_VISIBLE

   @ 10, 10 EDITBOX oEdit CAPTION cMess SIZE 480, 400 STYLE WS_VSCROLL + WS_HSCROLL + ES_MULTILINE + ES_READONLY ;
            COLOR 255 FONT HFont():Add( '',0,-11,400,,,)  ;
            ON GETFOCUS { || SendMessage( oEdit:handle, EM_SETSEL, 0, 0 ) }

   @ 390,420 BUTTONEX "Fechar" ON CLICK { || enddialog() } SIZE 100, 38 ;
             BITMAP (HBitmap():AddResource(1005)):handle  ;
             TOOLTIP 'Clique aqui para Fechar'

   oDlg:Activate()

RETURN Nil

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 

Function ENVIA_ERRO()
      LOCAL oSmtp, oEMail
      LOCAL cSmtpUrl
      LOCAL cSubject, cFrom, cTo, cBody, cFile

      cSmtpUrl := "smtp://meuemail:senha@smtp.mail.yahoo.com.br"
      cFrom    := "meuemail@yahoo.com.br"
      cTo      := "meuemail@ymail.com"

      cSubject := [Envio de erro]
      cFile    := cNOME
      cBody    := [Envio de erro]

      oEMail   := TIpMail():new()
      oEMail:setHeader( cSubject, cFrom, cTo )
      oEMail:setBody( cBody )
      oEMail:attachFile( cFile )

      oEMail:hHeaders[ "Disposition-Notification-To" ] := cFrom

      oSmtp := TIpClientSmtp():new( cSmtpUrl )

      IF oSmtp:open()
         oSmtp:sendMail( oEMail )
         oSmtp:close()
         MSGINFO( [E-Mail enviado] )
      ELSE
         MSGINFO( "Erro:", oSmtp:lastErrorMessage() )
      ENDIF
RETURN Nil

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Enviar arq. de erro por email.

Mensagem por sygecom »

Essa rotina eu uso com Hwgui puro, sem uso de outras lib's. Se for usar outras lib juntos tens que usar o errorsys.prg do xharbour e não da Hwgui.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
gilbertosilverio
Usuário Nível 3
Usuário Nível 3
Mensagens: 339
Registrado em: 18 Jan 2009 10:39
Localização: Ribeirao Pires - SP

Re: Enviar arq. de erro por email.

Mensagem por gilbertosilverio »

Leonardo,

Tentei tambem somente com hwgui puro, mais da a mesma mensagem.

O estranho que e somente em rede, na maquina local funciona que e uma beleza... :))

Fiz teste com xhb 1.2.1 + wvt + hwgui e tambem da erro.

Creio que seja alguma conflito com o errorsys da xhb com o da Hwgui.

Grato.
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
Responder