zoukankan      html  css  js  c++  java
  • 日志记录.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的话,可以在日志线程中添加临界区,以保证外界调用日志记录函数时的安全性

                            

       

  • 相关阅读:
    北京周末去哪儿 —— 玉渊潭
    Linux 添加中文字体库,解决Java 生成中文水印不显示问题
    海淀驾校拿本过程
    IOS 微信返回按钮事件控制弹层关闭还是返回上一页
    java 将mysql中Blob类型转为字符串或数字
    echarts 技巧自己的一些记录
    java发送post请求,使用multipart/form-data的方式传递参数,可实现服务器间文件上传功能(转)
    java 调用webservice接口wsdl,推荐使用wsdl2java,放弃wsimport
    北京周末去哪儿 —— 香山
    北京周末去哪儿 —— 百望山森林公园
  • 原文地址:https://www.cnblogs.com/jieling/p/5861641.html
Copyright © 2011-2022 走看看