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 的日志模式还是很厉害的。
发表评论