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

时间: 2024-11-08 09:59:52

日志记录.01_内存流操作的相关文章

Python 日志记录与程序流追踪(基础篇)

日志记录(Logging) More than print: 每次用 terminal debug 时都要手动在各种可能出现 bug 的地方 print 相关信息来确认 bug 的位置: 每次完成 debug 后为了避免输出太多细节信息和代码整洁,又需要把几个关键位置的 print 注释掉甚至删掉: 当下次出 bug 时,继续上述步骤... 有没有更好的方法呢? 等级(Level ) Python 3 中提供了非常方便的日志记录库 logging,可以记录不同等级(level)的日志信息.系统默

wcf利用IDispatchMessageInspector实现接口监控日志记录和并发限流

一般对于提供出来的接口,虽然知道在哪些业务场景下才会被调用,但是不知道什么时候被调用.调用的频率.接口性能,当出现问题的时候也不容易重现请求:为了追踪这些内容就需要把每次接口的调用信息给完整的记录下来,也就是记录日志.日志中可以把调用方ip.服务器ip.调用时间点.时长.输入输出都给完整的记录下来,有了这些数据,排查问题.重现异常.性能瓶颈都能准确的找到切入点. 这种功能,当然没人想要去在每个Operation里边插入一段代码,如果有类似AOP的玩意就再好不过了. wcf中有IDispatchM

内存中OLTP(Hekaton)里的事务日志记录

在今天的文章里,我想详细讨论下内存中OLTP里的事务日志如何写入事务日志.我们都知道,对于你的内存优化表(Memory Optimized Tables),内存中OLTP提供你2个持久性(durability)选项: SCHEMA_ONLY SCHEMA_AND_DATA 今天我不想更多讨论SCHEMA_ONLY,因为使用这个选项,在事务日志里没有发生任何日志(SQL Server 重启后你的数据会丢失).今天我们会专门讲解下SCHEMA_AND_DATA选项的持久性. SCHEMA_AND_D

按时按登录IP记录Linux所有用户操作日志的方法(附脚本)

PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所有用户登录所操作的日志记录! 在/etc/profile配置文件的末尾加入以下脚本代码就可以实现,下面脚本是我网上找来的,原作者不知.但原脚本的时间变量有错误,不能记录时间,本人测试发现并检查修正: PS1="`whoami`@`hostname`:"'[$PWD]' history US

springmvc+log4j操作日志记录,详细配置

没有接触过的,先了解一下:log4j教程 部分内容来:log4j教程 感谢! 需要导入包: log包:log4j-12.17.jar 第一步:web.xml配置 <!-- log4j配置,文件路径,因为是跟随项目启动 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.xml</param-value>

操作日志记录

1.存在的意义 所日志记录,就是记录所有的操作,使领导对这个系统的流转了如指掌,同时要是系统出现了问题,也可以清楚找到问题的所在. 2. 界面展示 3. 主要代码分析(提供三种方法)   3.1 方法一 使用aop实现 源码介绍: 01.首先在保证你的环境无误的情况下(我用的是ssh) 02.BussAnnotation.java  (自定义注解) package cn.bdqn.annotation; /** * 自定义注解(用于记录日志) */ import java.lang.annota

用户操作拦截并作日志记录--自定义注解+AOP拦截

作为运营除了处理系统生产问题,还要处理大量的用户上报事件,这部分工作占用了大量的人力.所有考虑把一部分事件查询处理做成一个自助平台,让用户自行核查处理.于是就有了用户自助系统.考虑到如何计量这个工具平台具体的实现价值,需要做用户操作统计才能给出可信服的数据. 以上就是本文的背景.自助系统的架构就是传统的springmvc+spinrg+mybatis+oracle.想到日志记录首先想到的就是AOP拦截处理.网上相关的技术贴很多.简单的小项目遇到的问题一般度娘都能给解决了~\(≧▽≦)/~ 自定义

简易的用户操作日志记录

记录系统内用户的操作日志. 1.日志类 public class SysLog { /** * 主键 */ private String id; /** * 操作开始时间 */ private Date createTime; /** * 操作结束时间 */ private Date endTime; /** * 执行耗时 */ private long excuteTime; /** * 接口地址 */ private String url; /** * 请求参数 */ private Str

Phalcon 日志记录(Logging)

Phalcon提供了一个日志记录组件即 Phalcon\Logger. 我们可以使用此组件输出日志到不同的流中,如文件,系统日志等. 这个组件还提供了其它的功能如日志事务(类似于数据库的事务), 配置选项, 还可以输出不同的格式,另外还支持多种过滤器. Phalcon\Logger 提供了多种日志记录方式,从调试程序到跟踪应用的执行以满足应用的需求. 适配器(Adapters)? 此组件使用不同的流适配器来保存日信息. 我们可以按需使用适配器.支持的适配器如下: 适配器 描述 接口 File 保