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
的一部分,如sllError
、sllException
、sllExceptionOS
、sllLastError
和sllFail
)。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 的日志模式还是很厉害的。