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 错误在等着你。