首页 > 代码库 > 日志记录.01_内存流操作

日志记录.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;

        

 

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