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

Posted 红鱼儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的管理器。

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

以上是关于kbmMWLog同时输出日志到多个日志管理器的主要内容,如果未能解决你的问题,请参考以下文章

简介kbmmw 5 里面的日志备份功能

Golang将日志同时输出到控制台和文件

linux之同时监控多个日志文件变化

Springboot中的日志管理

关于:清除并发请求和(或)管理器数据 请求的理解

如何用log4j输出多个自定义日志文件