用于在structlog(或类似接收器)顶部进行作用域日志记录的库
scopedlog的Python项目详细描述
范围日志
在structlog(或类似的接收器)顶部进行作用域日志记录的库,其灵感来自于一个显然已失效的lithoxyl。请注意,我(kshpytsya)并没有仔细研究实际的lithoxyl实现,以保持头脑清醒。
下面是一个示例:
importcontextlibimportstructlogimportstructlog.stdlibimportstructlog.devimportstructlog.processorsimportscopedlogimportscopedlog.sink_structlogimportscopedlog.idgen_seqstructlog.configure(processors=[structlog.stdlib.add_log_level,structlog.processors.ExceptionPrettyPrinter(),structlog.dev.ConsoleRenderer()])slog=scopedlog.ScopedLog(sink=scopedlog.sink_structlog.StructlogSink(structlog.get_logger()),id_gen=scopedlog.idgen_seq.GlobalSeqScopeIdGenenerator())withcontextlib.suppress(RuntimeError):withslog.info("scope1",k1=1)assl:sl.debug("state1",k2=2,k3=3)sl.info("state1",k4=4)sl.warn("state1",k5=5)raiseRuntimeError("bad one")withcontextlib.suppress(RuntimeError):withslog.debug("scope2",k1=1)assl:sl.debug("state1",k2=2,k3=3)sl.info("state1",k4=4)sl.warn("state1",k5=5)raiseRuntimeError("bad too ;)")withslog.debug("scope3")assl:sl.fail()withslog.debug("scope4")assl:sl.exit_kw["k1"]=1
以及预期产量:
有关更多示例,请参见tests。