vtdeleon:
La verdad es que de lo que leí, se comenta que se hace con componentes de la JEDI, y no hago uso de esas librerías, ya que hasta el momento no tuve necesidad de usarlas...
Yo cuento por el momento este código:
Código Delphi
[-]
unit UErrorLog;
interface
procedure StartLog(const AFileName: string);
procedure StopLog;
implementation
uses
SysUtils, Forms;
type
TExceptionLog = class
protected
SavedHandler: TExceptionEvent;
FileName: string;
procedure ExceptionHandler(Sender: TObject; E: Exception);
public
constructor Create(const AFileName: string);
destructor Destroy; override;
end;
var
Log: TExceptionLog = Nil;
procedure StartLog(const AFileName: string);
begin
if NOT Assigned(Log)
then Log := TExceptionLog.Create(AFileName);
end;
procedure StopLog;
begin
if Assigned(Log)
then begin
Log.Free;
Log := Nil;
end;
end;
procedure TExceptionLog.ExceptionHandler(Sender: TObject; E: Exception);
var Txt: TextFile;
begin
Application.ShowException(E);
try
AssignFile(Txt,FileName);
try
Append(Txt);
except
Rewrite(Txt);
end;
try
writeln(Txt, FormatDateTime('hh:nn:ss',Now)+' '+ E.ClassName +': '+E.Message +' - '+Sender.ClassName);
finally
CloseFile(Txt);
end;
except
end;
end;
constructor TExceptionLog.Create(const AFileName: string);
begin
inherited Create;
FileName := AFileName;
SavedHandler := Application.OnException;
Application.OnException := ExceptionHandler;
end;
destructor TExceptionLog.Destroy;
begin
Application.OnException := SavedHandler;
inherited Destroy;
end;
Initialization
Finalization
StopLog;
end.
Como podrás observar, es demasiado simple... estuve viendo que más le puedo sacar al Exception y del Sender... y por el momento no se me ocurre nada...
Realmente me gustaría poder capturar muchas de las cosas que ofrece el componente de la JEDI... pero lo que he leído del hilo que me mandaste, esa info (en parte) va junto al exe,... y no se... me gustaría evitarme eso.
Estaba pensando en descargar la JEDI Library... como para chequear un poco, pero me gustaría saber si hay alguna manera de sacar alguna (por lo menos) de la info que ofrece ese componente... mediante algún código más o menos sencillo sin tener que andar descargandolo. ¿Me explico? A ver,
¿Es posible obtener información parecida a lo que ofrece el componente, sin tener que hacer uso del mismo, por código? No quisiera decargar toda una librería si lo que quiero se puede hacer sin componente... no quiere decir que esté en contra de la librería (estoy seguro de que le sacaría provecho), ¿pero mientras me pueda valer de los componentes estándar (y/o propios)... para que más?
Desde ya muchas gracias.