• 日志记录.01_内存流操作


    日志记录,我们一般通过本地文本文件进行记录,对于使用的文件后缀名,一般为比较形象的 .log ,当然也可以是其它任何自定义的格式, 如: .abc,  .xyz

    本次随笔主要描述的是借用内在存流来处理日志记录 TMemoryStream;

    01. 日志记录,我们无创建一个用于记录的文件. 使用函数 FileCreate(文件路径), 可以是绝对路径,也可以是相对路径

           ♦ 注意一点:  FileCreate 函数会覆盖原有的内容; 而且还不会进行提示;

           ♦ 在实际使用过程中,最好通过 FileExists 判断一次再进行 FileCreate 动作; 否则原有的内容都将丢失 ;

    02. 对于日志内容的传递变量类型.

           ♦为解决中文双字节及Delphi中对字节长度计算有可能不一致的问题,我们使用 AnsiString 来传递内容

    03.为有效处理不同记录内容的换行处理,我们需要在每次的日志记录内容添加上回车换行符 #13#10, 也可以直接使用 sLineBreak;

    04.注意 FileSeek函数中三号参数的作用: 0:从文件头开始定位;1:从当前位置开始定位;2:从文件尾定位

    05.注意在写内存储内容时,使用的是内存流的实际内容起始地址: FMS.Memory^, 而不是指针的地址: FMS.Memory

    ------------------------------------------------------------

    var    FLogMsg:AnsiString;    FMS:TMemoryStream;    FLogFileName:String;    TH:THandle; begin    //日志文件    FLogFileName := 'LogTest.txt';    if not FileExists(FLogFileName) then       TH := FileCreate(FLogFileName)    else       TH := FileOpen(FLogFileName,fmOpenWrite+fmShareDenyWrite);    //文件定位.注意3号参数: 本处是定位到文件尾    FileSeek(TH,0,2);    //日志内容    FLogMsg := AnsiString( FormatDateTime('HH:MM:SS.ZZZ',Now)+'  '+' 这是一个测试日志内容.' );    //内存流    FMS := TMemoryStream.Create;    FMS.Write(FLogMsg[1],Length(FLogMsg));    //写日志    FMS.Position := 0; //保证从内存流最开始记录    FileWrite(TH,FMS.Memory^,FMS.Size);    //操作完毕    FileClose(TH); end;

            

  • 相关阅读:
    GitLab的基础使用-汉化配置
    GitLab的基础使用-数据备份与恢复
    Apache Hadoop集群扩容实战案例
    Hadoop 集群-完全分布式模式(Fully-Distributed Mode)
    HDFS参数调优总结
    网站压力测试 工具webbench
    2013年十大必知的大数据分析公司
    做电子商务网上开店应该读的书
    教你用大功率路由器覆盖3平方公里的WiFi广告
    中央推进城镇化建设 六行业分享25万亿蛋糕
  • 原文地址:https://www.cnblogs.com/jieling/p/5861592.html
Copyright © 2020-2023  润新知