mORMot2 的 Logger日志

mORMot2 的 Logger日志

Logger 很多框架都有,简单的实现就是一个队列加一根线,有复杂的,QDAC里面涉及的就很巧妙,本来QDAC就是个线程框架,所以也有先天优势。

在mORMot 里面自然也有日志实现,它设计的比较麻烦。

  • mORMot 的Logger 初始化
begin
  TSynLog.Family.Level := LOG_VERBOSE; // disable logs for benchmarking
  TSynLog.Family.HighResolutionTimestamp := false;
  TSynLog.Family.NoEnvironmentVariable:=true;
  TSynLog.Family.FileExistsAction := acAppend;
  TSynLog.Family.PerThreadLog := ptOneFilePerThread;
  TSynLog.Family.OnArchive:=@EventArchiveZip;
  TSynLog.Family.AutoFlushTimeOut := 1;
end;  
  • mORMot 的Logger 初始化
var
    log: ISynLog;
begin
  log:=TSynLog.Enter();
  log.Log(TSynLogInfo.sllDebug, 'accdsdfdasdfafasf');
end; 

由mormot.core.log处理的可用日志事件包括:

  • 在mormot.core.base中定义,以便核心单元使用,即使未明确链接mormot.core.log也可使用。
  • 仅限于32个项目,以便有效地适应32位集合。

TSynLogLevel 包含了以下是具体的事件:

  • sllInfo:记录通用信息事件。
  • sllDebug:记录详细的调试信息。
  • sllTrace:记录低级别的逐步调试信息。
  • sllWarning:记录意外值(非错误)。
  • sllError:记录错误信息。
  • sllEnter:记录每个方法的开始。
  • sllLeave:记录每个方法的退出。
  • sllLastError:记录GetLastError操作系统消息。
  • sllException:记录抛出的所有异常——自Windows XP起可用。
  • sllExceptionOS:记录所有操作系统低级别异常(如EDivByZero、ERangeError、EAccessViolation等)。
  • sllMemory:记录内存统计信息(以MB为单位)。
  • sllStackTrace:记录调用者的堆栈跟踪(它默认是 TSynLogFamily.LevelStackTrace的一部分,如 sllErrorsllExceptionsllExceptionOSsllLastErrorsllFail)。
  • sllFail:为 TSynTestsLogged.Failed方法定义,并可用于记录一些客户端断言(可能是通知,而非错误)。
  • sllSQL:专用于跟踪SQL语句。
  • sllCache:应用于跟踪内部缓存机制。
  • sllResult:可以跟踪SQL结果,JSON编码。
  • sllDB:专用于跟踪低级别的数据库引擎功能。
  • sllHTTP:可用于跟踪HTTP进程。
  • sllClient/sllServer:可用于跟踪某些客户端或服务器进程。
  • sllServiceCall/sllServiceReturn:跟踪某些远程服务或库。
  • sllUserAuth:跟踪用户身份验证(例如,针对个别请求)。
  • sllCustom*项目:可用于任何目的。
  • sllNewRun:在进程打开旋转日志时写入。
  • sllDDDError:记录任何与DDD相关的低级别错误信息。
  • sllDDDInfo:记录任何与DDD相关的低级别调试信息。
  • sllMonitoring:记录统计信息(如果可用),或者可用于在连接到ToolsAdmin的人员之间进行实时聊天。

在 mORMot 1.18 中提供了要给logger日志的查器。其实有点累赘,当然用了那个工具顿时就可以感觉到 mORMot 的日志模式还是很厉害的。

img

posted @ 2024-04-23 23:02  海利鸟  阅读(99)  评论(0编辑  收藏  举报