日志记录.02_线程处理
Posted 耗喜天涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志记录.02_线程处理相关的知识,希望对你有一定的参考价值。
为了在业务系统中方便记录日志,可以建立一个线程类,专用于记录日志
Type
TCustomLogThread = class(TThread)
为了保证线程记录日志的有效性和安全性,在线程中可以添加一个临界区来进行保护,当高频记录日志时,可有效的保护日志记录安全
Var
FCS:TRTLCriticalSection; --WinApi.Windows.pas
--创建 --释放
InitializeCriticalSection(FCS); DeleteCriticalSection(FCS);
--进入保护 --日志处理完成后,要退出保护,否则其它线程永远无法记录日志了
EnterCriticalSection(FCS); LeaveCriticalSection(FCS);
------------------------------------------------------------------------
另外,D同时还提供了一个类对上面进行了封装
var
FCS:TCriticalSection; -- System.SyncObjs.pas --建议使用这种类型
--创建 --释放
FCS := TCriticalSection.Create; FCS.Destroy;
--进入 --离开
FCS.Enter; (FCS.Acquire) FCS.Leave; (FCS.Release)
----------------------------------------------------------------------------------------------
保护操作: a.进入保护; b.日志记录 c.退出保护
如果需要对日志进行日志级别,或者日志类型进行分类处理,可通过如下二种方法进行处理
A: 在日志线程中,开出需要进行分类标识的属性,供在执行日志时,通过分类标识处理日志文件或者处理日志内容节点内容
B:另外一种方法就是再新建一个新的对象类,在自定义类中提供相关的日志线程对象,用来分别记录不同分类的日志
如果是方案B的话,则在自定义类中需要配置临界面,以保证不同日志线程对同一日志资源访问的安全性
如果是方案A的话,可以在日志线程中添加临界区,以保证外界调用日志记录函数时的安全性
以上是关于日志记录.02_线程处理的主要内容,如果未能解决你的问题,请参考以下文章