kbmMWLog同时输出日志到多个日志管理器

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

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

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

那如果想同时输出日志到多种对象怎么办呢?如即想用文件记录日志,也想输出到系统控制台,在调试时能直接看到日志内容。作者已经考虑并实现了,那就是上面日志管理器TkbmMWTeeLogManager。

procedure TForm1.Button5Click(Sender: TObject);
var
   filelogmgr:IkbmMWLocalFileLogManager;
   systemlogmgr:IkbmMWSystemLogManager;
   teelogmgr:IkbmMWTeeLogManager;
begin
     // Prepare 2 log managers (system and local file)
     // and define a tee log manager which will duplicate
     // all log/audit between them.
     filelogmgr:=TkbmMWLocalFileLogManager.Create(‘.\log.txt‘,‘.\audit.txt‘);
     filelogmgr.FileOptions:=[mwlfoDeleteOldLog,mwlfoDeleteOldAudit];
     systemlogmgr:=TkbmMWSystemLogManager.Create;

     // Define a tee log manager which simply duplicates log data to two other
     // logmanagers.
     teelogmgr:=TkbmMWTeeLogManager.Create(filelogmgr,systemlogmgr);
     Log.LogManager:=teelogmgr;
     Log.LogManager.IgnoreException(EMyException);
end;

这是从作者提供的Demo中拿来的代码,先建立文件日志管理吕filelogmrg,systemlogmgr,然后再建一个teelogmgr,将filelogmrg,systemlogmgr作为Create的参数,同时传给teelogmgr对象,最后将teelogmgr设置为全局对象Log的管理器。

现在日志就同时输出到文件及系统这两个日志管理器对象中去了。

原文地址:https://www.cnblogs.com/kinglandsoft/p/9216646.html

时间: 2024-10-12 00:30:18

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

KBMMW 的日志管理器

kbmmw 4.82 最大的新特性就是增加了 日志管理器. 新的日志管理器实现了不同类型的日志.断言.异常处理.计时等功能. 首先.引用kbmMWLog.pas 单元后,系统就默认生成一个IkbmMWLog 实例: Log:IkbmMWLog; log 默认使用对应操作系统的日志功能. 为了能保存到硬盘上方便大家查看,可以使用本地文件方式,先设置一下日志及审计文件路径及属性 filelogmgr:=TkbmMWLocalFileLogManager.Create('.\log.txt','.\a

日志系统之Flume日志收集

最近接手维护一个日志系统,它用于对应用服务器上的日志进行收集然后提供实时分析.处理并最后将日志存储到目标存储引擎.针对这三个环节,业界已经有一套组件来应对各自的需求需求,它们是flume+kafka+hdfs/hbase.我们在实时分析.存储这两个环节,选择跟业界的实践相同,但agent是团队自己写的,出于对多种数据源的扩展需求以及原来收集日志的方式存在的一些不足,于是调研了一下flume的agent.结果是flume非常契合我们的实际需求,并且拥有良好的扩展性与稳定性.于是打算采用flume的

handy之日志--高性能无锁日志系统

服务器编程中,日志系统需要满足几个条件 .高效,日志系统不应占用太多资源 .简洁,为了一个简单的日志功能引入大量第三方代码未必值得 .线程安全,服务器中各个线程都能同时写出日志 .轮替,服务器不出故障是不重启的,半年一年的日志放到一个文件会导致文件过大 .及时保存,程序故障导致异常退出,此时需要通过日志诊断问题,不缓冲的日志系统更易用 著名的日志库有log4xxx系列,提供了非常灵活的功能,当然随之而来的代价就是庞大的库.在大多数服务器应用中,所需的功能不多,我偏向于选择一个支持按时间轮替的简洁

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

.NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包含控制台.文本文件.数据库,一般都是创建全局的Logger,在需要记录日志的地方调用相应的Logger输出至相应目标.遇到输出目标多了有时候也感觉挺麻烦的,不过也还能接受.开始学习.NetCore后接触到了日志记录框架(Logging组件),虽然完全可以用之前的方式记录日志,不过应该使用更通用的方式

【处理多服务器日志合并处理问题】多服务器的日志合并统计——apache日志的cronolog轮循

转发:http://www.chedong.com/tech/rotate_merge_log.html 内容摘要:你完全不必耐心地看完下面的所有内容,因为结论无非以下2点:1 用 cronolog 干净,安全地轮循apache"日"志2 用 sort -m 合并排序多个日志或者用: clfmerge合并日志 根据个人的使用经历:1 先介绍apache日志的合并方法:2 然后根据由此引出的问题说明日志轮循的必要性和解决方法,介绍如何通过cronolog对apache日志进行轮循:中间有

关于MySQL 通用查询日志和慢查询日志分析

MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询 (1)通用查询日志 在学习通用日志查询时,需要知道两个数据库中的常用命令: 1) showvariables like '%version%'; 效果图如下: 上述命令,显示当前数据库中与版本号相关的东西.

JAVAEE——SpringBoot日志篇:日志框架SLF4j、日志配置、日志使用、切换日志框架

Spring Boot 日志篇 1.日志框架(故事引入) 小张:开发一个大型系统: ? 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件? ? 2.框架来记录系统的一些运行时信息:日志框架 : zhanglogging.jar: ? 3.高大上的几个功能?异步模式?自动归档?xxxx? zhanglogging-good.jar? ? 4.将以前框架卸下来?换上新的框架,重新修改之前相关的API:zhanglogging-prefect.ja

MySQL 通用查询日志和慢查询日志分析

MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句.2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询 (1)通用查询日志 在学习通用日志查询时,需要知道两个数据库中的常用命令: 1) show variables like '%version%'; mysql> show variables like '%ve

让你的spring-boot应用日志随心所欲--spring boot日志深入分析

1.spring boot日志概述 spring boot使用Commons Logging作为内部的日志系统,并且给Java Util Logging,Log4J2以及Logback都提供了默认的配置.如果使用了spring boot的Starters,那么默认会使用Logback用于记录日志. 2.spring boot日志默认配置 我们启动一个空的spring-boot项目看一下控制台的日志 控制台的默认配置 logging.pattern.console=%clr(%d{${LOG_DA