kbmMWLog同时输出日志到多个日志管理器
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同时输出日志到多个日志管理器的更多相关文章
- python的日志模块:logging;django的日志系统;django日志输出时间修改
Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置 源代码 1.__init__.py包含以下类: StreamHandler Formatt ...
- [日志] spring boot + logback 日志输出配置
一.输出日志到控制台 springboot有很多starter(参考starter)方便快速构建项目依赖组件,logback是springboot默认的日志组件,启动即可看到打印在控制台输出的info ...
- Spark日志,及设置日志输出级别
Spark日志,及设置日志输出级别 1.全局应用设置 2.局部应用设置日志输出级别 3.Spark log4j.properties配置详解与实例(摘录于铭霏的记事本) 文章内容来源: 作者:大葱拌豆 ...
- Linux命令nohup实现命令后台运行并输出到或记录到日志文件
Linux命令nohup实现命令后台运行并输出到或记录到日志文件 导读 我们在调试程序的时候,免不了要去抓一些 log ,然后进行分析.如果 log 量不是很大的话,那很简单,只需简单的复制粘贴就好. ...
- KBMMW 的日志管理器
kbmmw 4.82 最大的新特性就是增加了 日志管理器. 新的日志管理器实现了不同类型的日志.断言.异常处理.计时等功能. 首先.引用kbmMWLog.pas 单元后,系统就默认生成一个IkbmMW ...
- .NetCore中的日志(1)日志组件解析
.NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...
- 机器数据的价值 - Web 访问日志和数据库审计日志
计算机数据 大量的数据流,不断增长的来源,蕴含着巨大的价值 在 Splunk,我们大量谈及计算机数据.这些数据是指在数据中心.“物联网”和互联设备世界中运行的所有系统产生的数据.其中包括支撑组织的应用 ...
- iOS应用日志:开始编写日志组件与异常日志
应用日志(一):开始编写日志组件 对于那些做后端开发的工程师来说,看 LOG解Bug应该是理所当然的事,但我接触到的移动应用开发的工程师里面,很多人并没有这个意识,查Bug时总是一遍一遍的试图重现,试 ...
- mysql之 日志体系(错误日志、查询日志、二进制日志、事务日志、中继日志)
一. mysql错误日志:错误日志记录的事件:a).服务器启动关闭过程中的信息b).服务器运行过程中的错误信息c).事件调试器运行一个事件时间生的信息d).在从服务器上启动从服务器进程时产生的信息lo ...
随机推荐
- 【洛谷p1319】压缩技术
(许久不见,甚是想念) 压缩技术[传送门] 洛谷上滴算法标签: 然而这是一道入门难度的题.(不管不管,就写它了) 好的先说一下思路吧wait!我忘记了咋做的当时. 首先做题第一道坎儿,如何输入若干个( ...
- 海康摄像头配置固定IP
前言 首先要海康设备连接好网线,电脑客户端跟海康设备在同一个局域网络. 1.直接在海康网站下载SADP工具软件,安装SADP工具,如图所示: 2.安装成功后,桌面的出现设备网络搜索, 面板介绍:这里将 ...
- c++ shared_ptr的使用
shared_ptr.是c++为了提高指针安全性而添加的智能指针,方便了内存管理.功能非常强大,非常强大,非常强大(不单单是shared_ptr,配合week_ptr以及enable_share_fr ...
- CentOS虚拟机和物理机共享文件夹实现
安装open-vm-tools: yum -y install open-vm-tools yum -y install open-vm-tools yum -y install open-vm ...
- 1013. Pairs of Songs With Total Durations Divisible by 60总持续时间可被 60 整除的歌曲
网址:https://leetcode.com/problems/pairs-of-songs-with-total-durations-divisible-by-60/submissions/ 参考 ...
- Beta阶段——第5篇 Scrum 冲刺博客
Beta阶段--第5篇 Scrum 冲刺博客 标签:软件工程 一.站立式会议照片 二.每个人的工作 (有work item 的ID) 昨日已完成的工作 人员 工作 林羽晴 完成了邮箱发送功能的测试,测 ...
- [codechef July Challenge 2017] Pishty and tree
PSHTTR: Pishty 和城堡题目描述Pishty 是生活在胡斯特市的一个小男孩.胡斯特是胡克兰境内的一个古城,以其中世纪风格的古堡和非常聪明的熊闻名全国.胡斯特的镇城之宝是就是这么一座古堡,历 ...
- 【转】JS常用函数整合库 lutils
lutils 此工具包是在 outils 的基础上,加上个人平时收集的代码片段进行的二次整合 outils的GitHub:https://github.com/proYang/outils/blob/ ...
- 从线程模型的角度看Netty的高性能
转载:Netty(二) 从线程模型的角度看 Netty 为什么是高性能的? 传统 IO 在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 java.io.* 下所提供的包. 比 ...
- Qt Widgets——动作类与小部件菜单项
本文主要涉及以下三个类: QAction ——QWidgetAction QActionGroup QAction可称为动作类,它一般可当作菜单中的项组成菜单,也可作为工具栏上的按钮,它主要由图标.文 ...