zoukankan      html  css  js  c++  java
  • 日志记录.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;

            

  • 相关阅读:
    Drupal Coder 模块远程命令执行分析(SA-CONTRIB-2016-039)
    Python 实现 ZoomEye API SDK
    程序员互动联盟第一届编码大赛第二题解题分享
    python中各进制之间的转换
    记一次ctf比赛解密题的解决(可逆加密基本破解之暴力破解)
    使用JsonConfig控制JSON lib序列化
    openMRS项目
    Harmonic Number(调和级数+欧拉常数)
    Pairs Forming LCM(素因子分解)
    Uva 11395 Sigma Function (因子和)
  • 原文地址:https://www.cnblogs.com/jieling/p/5861592.html
Copyright © 2011-2022 走看看