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