Página 1 de 2
Enviar arq. de erro por email.
Enviado: 24 Abr 2009 14:35
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
Re: Enviar arq. de erro por email.
Enviado: 24 Abr 2009 15:35
por sygecom
Está usando algum visual grafico ?
Re: Enviar arq. de erro por email.
Enviado: 24 Abr 2009 17:38
por marcos.gurupi
Estou usando Hwgui 2.17
Marcos roberto
Re: Enviar arq. de erro por email.
Enviado: 24 Abr 2009 18:42
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
Re: Enviar arq. de erro por email.
Enviado: 25 Abr 2009 22:27
por marcos.gurupi
Obrigado vou fazer.
Marcos Roberto
Re: Enviar arq. de erro por email.
Enviado: 26 Abr 2009 21:42
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.
Re: Enviar arq. de erro por email.
Enviado: 26 Abr 2009 23:22
por asimoes
Olá Leonardo,
Verificando o arquivo errorsys.prg que você anexou focaram faltando algumas funções:
MyExitProc2()
inetestaconectada()
Fim_Run()
MsgRun()
[]´s
Re: Enviar arq. de erro por email.
Enviado: 27 Abr 2009 03:03
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
Re: Enviar arq. de erro por email.
Enviado: 27 Abr 2009 15:54
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
Re: Enviar arq. de erro por email.
Enviado: 27 Abr 2009 16:56
por sygecom
Marcos,
Você tem que linkar o ErrorSys.prg no seu aplicativo e não na LIB da Hwgui.
Re: Enviar arq. de erro por email.
Enviado: 28 Abr 2009 15:14
por marcos.gurupi
Ah eh!!! Foi mal. :)Pos
Marcos Roberto.
Re: Enviar arq. de erro por email.
Enviado: 28 Abr 2009 16:50
por sygecom
Tranquilo, qualquer coisa prende o grito.
Re: Enviar arq. de erro por email.
Enviado: 01 Mai 2009 15:07
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
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Re: Enviar arq. de erro por email.
Enviado: 01 Mai 2009 17:22
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.
Re: Enviar arq. de erro por email.
Enviado: 01 Mai 2009 18:05
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.