实现线程安全日志记录

Yur*_*riy 5 delphi queue logging multithreading

我的任务是创建一个类,它将围绕多个应用程序收集用户活动.

假设我有一个类TLogging和一个名为的全局对象Logging.

用户活动(屏幕打开等)应该在内存中收集(可能放入(字符串)列表中TLogging)并在一段时间间隔(每10分钟)或应用程序关闭后保存到日志文件中.

最重要的是日志记录必须处于"静默模式",它不得以任何方式影响用户工作流程:没有屏幕挂起,没有例外.

请给我这个任务的方向.

jpf*_*ius 15

这是一个涉及多个领域的非常广泛的问题.一些提示:

  • 至少考虑一个既定的日志框架.CodeSite附带了较新的Delphi版本.SmartInspect是另一种选择.

  • 使用同步原语使您的类具有线程安全性:TCriticalSection,TMREWSync

  • 在尝试编写线程安全的日志记录框架之前,请确保您了解多线程和同步中涉及的问题.一个好的开始是Martin Harvey的多线程指南- 德尔福之路.

  • 使用后台线程以定期的间隔将日志内容刷新到磁盘,或者是否已缓冲足够的数据.

  • 如果遇到特定问题,请在此处询问更具体的问题.