delphi - TApplicationEvents 作为动态组件或静态组件用于跟踪在 Delphi 中调用的例程

标签 delphi dynamic static event-handling components

不幸的是,我不是在我的开发中的 PC 上写这个问题,所以我可能会犯一些错误。请为此感到抱歉... 所以 - 我的问题 - 您使用什么方法在您的应用程序中实现错误日志记录?

在 web 中 (http://delphi.about.com) 是一个很好的事件处理程序,但它只是将系统错误复制到文件中,但我想通过捕获内存和堆栈(以及处理器信息,如果我有时间的话)来扩展它的功能。如果我动态调用它而不是在表单上添加它的组件,我应该知道吗?

procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception) ;
var
   ErrorLogFileName : string;
   ErrorFile : TextFile;
   ErrorData : string;
begin
   ErrorLogFileName := ChangeFileExt(Application.ExeName,'.error.log') ;
   AssignFile(ErrorFile, ErrorLogFileName) ;

   //either create an error log file, or append to an existing one
   if FileExists(ErrorLogFileName) then
     Append(ErrorFile)
   else
     Rewrite(ErrorFile) ;

   try
     //add the current date/time and the exception message to the log
     ErrorData := Format('%s : %s',[DateTimeToStr(Now),E.Message]) ;
     WriteLn(ErrorFile,ErrorData) ;
   finally
     CloseFile(ErrorFile)
   end;

   //Show the exception
   Application.ShowException(E) ;
end;

... 和 http://delphi.about.com/cs/adptips2001/a/bltip0101_2.htm

正如我们所知,Delphi 还提供有点像 C 的内存管理 - 使用 & 符号和 Pascal 函数,但最有效的日志记录是什么?

先谢谢了!希望本主题对其他优秀的程序员有用。

最佳答案

可能值得查看第三方组件而不是自己编写一些东西。两者 EurekaLogmadExcept几乎完全按照你的要求去做。两者都提供了很好的输出,并支持连接到错误跟踪系统,如 FogBugz , MantisBugZilla .有了它,您实际上可以整理收到的错误报告、发现常见模式并希望更快地修复错误。

就我个人而言,安装 Jedi JVCL/JCL 有点矫枉过正,因为它只是一个异常跟踪,因为它是一个相当大的安装。我上面提到的两个都是商业产品,但一分钱一分货。

关于delphi - TApplicationEvents 作为动态组件或静态组件用于跟踪在 Delphi 中调用的例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115443/

相关文章:

delphi - 为什么 Delphi 2009 IDE 生成的可执行文件与命令行生成的可执行文件不同?

java - Delphi 有 block 标签吗?

delphi - 从类助手访问私有(private)字段

c - 在C中动态分配结构体和其中的数组

javascript - 动态 DOM 操作函数 : How To Improve It, 我应该使用它吗?它在这里做什么?

c++ - 如何创建静态常量成员 std::string 数组?

java - 使用静态成员变量并行化类

delphi - 如何使用 VCL 类的接口(interface)?

javascript - jQuery:根据动态添加的类选择元素?

java - 分配非静态变量的静态方法