[教程]QLog 分类型记录日志和 TQLogStringsWriter 的用法简单示例

QLog 最近做了一些更新,下面演示下更新的几个地方的使用方法:

1、为 TQLogWriter 基类添加了 AcceptLevels 属性,以便将不同类型的日志输出到不同的目标中。比如,我们要将 llError,llFatal 类型的日志输出到一个单独的文件中,我们可以用类似下面的代码实现(中间省略其它代码):

var
  AErrorWriter:TQLogFileWriter;
begin
...
AErrorWriter:=TQLogFileWriter.Create('logs\error.log');
AErrorWriter.AcceptLevels:=[llError,llFatal];
...
Logs.Castor.AddWriter(AErrorWriter);
...
end;

【注意】

全局的 Logs 对象也有一个 AcceptLevels 属性,它用来控制的是全局日志输出选项,而 TQLogWriter.AcceptLevels 只针对当前的实例生效。换句话说,如果投递的日志不在 Logs.AcceptLevels 里,就肯定不会记录,然后才会轮到 TQLogWriter.AcceptLevels 判断。

2、增加了一个 TQLogStringsWriter,这个是用来将日志写入到支持 TStrings 类型的属性的控件中,以便呈现给用户查看的日志写入类。建议开启懒汉模式(LazyWrite),设置它后,日志写入延迟 100 ms,然后批量更新到 TStrings 中。一般来说,TQLogStringsWriter 我们还会同时设置 MaxItems 属性,以避免日志占用过多的内存,下面是一个例子:

var
  AWriter:TQLogStringsWriter;
begin
  AWriter := TQLogStringsWriter.Create;
  AWriter.Items := Memo1.Lines;
  AWriter.MaxItems := 100;
  AWriter.LazyWrite := True;
  Logs.Castor.AddWriter(AWriter);
end;

这个例子中,通过将 AWriter.Items 赋值为 Memo1.Lines,从而表示将日志输出到 Memo1,最多 100 条日志,开启懒汉模式。这里要注意一点,一定要保证Memo1 不会提前释放掉,否则,AV 错误在等着你。

 

分享到: