Criando log de erros de
execução para seus programas
Autor: Anderson Souza www.souza.orgfree.com
Data: 22/07/2006
|
| Criando log de erro para
seus programas delphi |
|
Com este código
você pode implementar seus programas em delphi com
um único tratamento de erros.
Ao acontecer um erro não tratado, será chamado o procedimento
EventoErro, que irá tratá-lo de forma genérica,
exibindo a mensagem: 'ERRO: Ocorreu um erro indeterminado! Este
erro pode ser fatal.' e depois finaliza a aplicação,
gravando em log o erro completo com sua descrição.
Claro que modificando o procedimento você pode mudar o tratamento,
não finalizando a aplicação, ou mudando a mensagem.
Bom, vamos começar com a dica, vou chamar o form principal
de sua aplicação delphi como Form1.
No form principal da sua aplicação delphi localize
as linhas:
private
{ Private declarations }
public
{ Public declarations }
end;
Modifique para: |
|
| private
{ Private declarations }
Caminho : String; //
Inclusão.
NomeDoUsuario : String; //
Inclusão.
public
{ Public declarations }
Procedure EventoErro(Sender: TObject; E:
Exception); // Inclusão.
end; |
-
NomeDoUsuario: É uma variável
de sugestão para que você trate melhor o seu log,
você pode inicializa-la em alguma parte do s eu código
com o nome do usuário que está usando o sistema,
ou deixar vazia (digo, NomeDoUsuario := '';).
-
Caminho: É uma variável, que contém o path
para gravação do seu log de eventos de erro, não
esquecendo dos direitos de gravação. Exemplo:
Caminho := '/var/log/diretoriolog/';
Depois inclua o procedimento abaixo no seu código:
|
| procedure TForm1.EventoErro(Sender:
TObject; E: Exception);
var
F : TextFile;
S : String;
I : Integer;
begin
{$I-}
Try
I := 0;
S := '';
While (E.Message[I] <> Chr(13)) and (I < Length(E.Message))
do
Begin
I := (I +1);
S := (S + E.Message[I]);
End;{do}
S := (DateTimeToStr(Now)+' '+NomeDoUsuario+': '+S);
AssignFile(F,(Caminho+'errolog.txt'));
If FileExists((Caminho+'errolog.txt')) Then
Append(F){}
Else
Rewrite(F);{if}
Writeln(F,S);
CloseFile(F);
ShowMessage('ERRO: Ocorreu um erro indeterminado! Este
erro pode ser fatal.');
Application.Terminate;
Abort;
Except
Application.Terminate;
Abort;
End;{try}
{$I+}
end;{procedure} |
| Inclua a linha abaixo
no formulário principal de sua aplicação, coloque-a
no evento de Create ou de FormShow: |
| Application.OnException := EventoErro;
|
|
Assim todos os eventos de erro do seu programa serão gravados
no log de erro.
Se você tratar uma parte do seu código com try except
end; o procedimento EventoErro será ignorado, e o seu procedimento
desta parte do código, em específico, será
utilizado.
|
|