123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960(*
* Copyright yutopp 2017 - .
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*)typet={mutableseverity:Severity.t;mutableformatter:Format.formatter;mutabletimer:Timer.gen_t;}typelocation_t=string*inttype'aformat_t=('a,Format.formatter,unit,unit)format4letcreate~severity~formatter~timer={severity;formatter;timer}letcreate_default()=create~severity:Severity.Debug~formatter:Format.std_formatter~timer:Timer.current_genletset_severityloggerseverity=logger.severity<-severityletset_formatterloggerformatter=logger.formatter<-formatterletset_timerloggertimer=logger.timer<-timerletprinter~logger=letopenPrinter.Builtinindatetime_printerlogger.timer>>severity_printer>>position_printer>>format_printer>>endline_printerletlogloggerseverity(module_name,line)fmt=letpp=printer~loggerinmatchSeverity.more_severe_than_or_equalseveritylogger.severitywith|true->letctx=Context.make~severity~module_name~lineinpp(fun_->())ctxlogger.formatterfmt|_->(* ignore *)Printf.ifprintflogger.formatterfmtletemergencyloggerlocationfmt=logloggerSeverity.Emergencylocationfmtletalertloggerlocationfmt=logloggerSeverity.Alertlocationfmtletcriticalloggerlocationfmt=logloggerSeverity.Criticallocationfmtleterrorloggerlocationfmt=logloggerSeverity.Errorlocationfmtletwarningloggerlocationfmt=logloggerSeverity.Warninglocationfmtletnoticeloggerlocationfmt=logloggerSeverity.Noticelocationfmtletinfologgerlocationfmt=logloggerSeverity.Infolocationfmtletdebugloggerlocationfmt=logloggerSeverity.Debuglocationfmt