kbmMWLog日志框架,针对不同的业务情况,提供了多种日志管理器:

  • TkbmMWStreamLogManager
  • TkbmMWLocalFileLogManager
  • TkbmMWSystemLogManager
  • TkbmMWStringsLogManager
  • TkbmMWProxyLogManager
  • TkbmMWTeeLogManager
  • TkbmMWNullLogManager

这些日志管理器,针对不同的日志输出对象而实现,比如将日志输出到文件、TStrings,Stream、系统控制台等。

那如果想同时输出日志到多种对象怎么办呢?例如:想用文件记录日志的同时,也想输出到系统控制台以及界面上的Memo控件,在调试时能直接看到日志内容。非常幸运,作者已经为我们考虑到并完美实现,那就是用上面日志管理器TkbmMWTeeLogManager。直接看代码:

procedure TForm1.Button5Click(Sender: TObject);
var
filelogmgr:IkbmMWLocalFileLogManager;
systemlogmgr:IkbmMWSystemLogManager;
teelogmgr:IkbmMWTeeLogManager;
stringslogmgr:TkbmMWStringsLogManager;
begin
// 准备三个日志管理器 (系统及本地文件及Strings)
// 然后定义一个tee日志管理器,并将系统及本地文件日志管理器传给tee日志管理器
filelogmgr:=TkbmMWLocalFileLogManager.Create('.\log.txt','.\audit.txt');
filelogmgr.FileOptions:=[mwlfoDeleteOldLog,mwlfoDeleteOldAudit];
systemlogmgr:=TkbmMWSystemLogManager.Create;
//用Memo显示日志
stringslogmgr:=TkbmMWStringsLogManager.Create(Memo1.Lines);
//定义一个tee日志管理器,让日志信息传递给另外两个日志管理器
teelogmgr:=TkbmMWTeeLogManager.Create(filelogmgr,systemlogmgr,stringslogmgr);
Log.LogManager:=teelogmgr; //忽略指定的异常,不记录到日志
Log.LogManager.IgnoreException(EMyException);
end;

这是从作者提供的Demo中拿来并进一步完善的代码,先建立文件日志管理器filelogmrg,系统日志管理器systemlogmgr,然后再建一个teelogmgr,将filelogmrg,systemlogmgr作为tee日志管理器的Create方法的参数,同时传给teelogmgr对象,最后将teelogmgr设置为全局对象Log的管理器。我做了补充,让日志同时显示到Memo控件上,因为又加了StringsLogManager管理器。

现在日志就同时输出到文件及系统及控件Memo这三个日志管理器对象中去了。可以分别对这三个日志管理器做进一步的设置,例如,在文件日志中记录所有类型的日志,而在Memo中只显示Debug,Error,Fatal类型的日志,用下面代码设置:

stringslogmgr.LogTypeFilter:=[mwltDebug,{mwltInfo,mwltWarning,}mwltError,mwltFatal{,mwltAudit}];

kbmMWLog同时输出日志到多个日志管理器的更多相关文章

  1. python的日志模块:logging;django的日志系统;django日志输出时间修改

    Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置 源代码 1.__init__.py包含以下类: StreamHandler Formatt ...

  2. [日志] spring boot + logback 日志输出配置

    一.输出日志到控制台 springboot有很多starter(参考starter)方便快速构建项目依赖组件,logback是springboot默认的日志组件,启动即可看到打印在控制台输出的info ...

  3. Spark日志,及设置日志输出级别

    Spark日志,及设置日志输出级别 1.全局应用设置 2.局部应用设置日志输出级别 3.Spark log4j.properties配置详解与实例(摘录于铭霏的记事本) 文章内容来源: 作者:大葱拌豆 ...

  4. Linux命令nohup实现命令后台运行并输出到或记录到日志文件

    Linux命令nohup实现命令后台运行并输出到或记录到日志文件 导读 我们在调试程序的时候,免不了要去抓一些 log ,然后进行分析.如果 log 量不是很大的话,那很简单,只需简单的复制粘贴就好. ...

  5. KBMMW 的日志管理器

    kbmmw 4.82 最大的新特性就是增加了 日志管理器. 新的日志管理器实现了不同类型的日志.断言.异常处理.计时等功能. 首先.引用kbmMWLog.pas 单元后,系统就默认生成一个IkbmMW ...

  6. .NetCore中的日志(1)日志组件解析

    .NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...

  7. 机器数据的价值 - Web 访问日志和数据库审计日志

    计算机数据 大量的数据流,不断增长的来源,蕴含着巨大的价值 在 Splunk,我们大量谈及计算机数据.这些数据是指在数据中心.“物联网”和互联设备世界中运行的所有系统产生的数据.其中包括支撑组织的应用 ...

  8. iOS应用日志:开始编写日志组件与异常日志

    应用日志(一):开始编写日志组件 对于那些做后端开发的工程师来说,看 LOG解Bug应该是理所当然的事,但我接触到的移动应用开发的工程师里面,很多人并没有这个意识,查Bug时总是一遍一遍的试图重现,试 ...

  9. mysql之 日志体系(错误日志、查询日志、二进制日志、事务日志、中继日志)

    一. mysql错误日志:错误日志记录的事件:a).服务器启动关闭过程中的信息b).服务器运行过程中的错误信息c).事件调试器运行一个事件时间生的信息d).在从服务器上启动从服务器进程时产生的信息lo ...

随机推荐

  1. bzoj3926: [Zjoi2015]诸神眷顾的幻想乡 后缀自动机在tire树上拓展

    题意:有棵树每个点有个颜色(不超过10种),每个节点不超过20个儿子,问你每两点之间的颜色序列不同的有多少种 题解:先建出树,对于每个叶子节点,bfs一遍建在sam上,每次保留当前点在sam上的位置, ...

  2. 5月21 回话控制SESSION COOKIE

    百科 HTTP普及(无状态性) 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP ...

  3. React文档(七)处理事件

    React元素处理事件和DOM元素处理事件很类似.下面是一些语法的不同之处: React事件的命名是用驼峰命名,而不是小写字母. 利用JSX你传递一个函数作为事件处理器,而不是一个字符串. 举个例子, ...

  4. CSU OJ 1340 A Sample Problem

    Description My girlfriend loves 7 very much, she thinks it is lucky! If an integer contains one or m ...

  5. ubuntu LAMP的安装

    1.安装 Apache 1.打开终端 2. 输入以下命令 sudo apt-get install apache2 3. 如果没有sudo 权限,需要输入密码. 2.测试 Apache 为了确定安装是 ...

  6. 【LeetCode】N数和

    1. 3Sum 给定一个无序数组(可能存在重复元素),是否存在三个数之和为0,输出所有不重复的三元组. e.g. 给定数组 [-1, 0, 1, 2, -1, -4], 结果集为:[ [-1, 0, ...

  7. zzw原创_oracle回收站相关操作知识

    1.查询回收站状态语句 select * from user_recyclebin order by droptime desc   2.还原回收站 FLASHBACK TABLE  << ...

  8. ForkJoin

    Java Fork/Join 框架 jdk1.8-ForkJoin框架剖析 Java的Fork/Join任务,你写对了吗? 概述 从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务 ...

  9. Mybatis排序无效问题解决

    在 mybatis 的 xml中,为一个SQL语句配置order by 子句时,需要这个排序的字段是前端传递过来的,而且排序的顺序(升序 OR 降序)也是由前端传递过来的.对于这种需求,我起初写成了下 ...

  10. Eclipse Mars-Ant无法使用jre1.6的问题

    https://www.jianshu.com/p/24b9517d7f43 Eclipse 升级到Mars 4.5.1版本后,老项目使用jdk1.6,通过ant编译jar时,会遇到如下问题: 使用j ...