aiologfields:将任务上下文字段注入记录器
aiologfields的Python项目详细描述
aiologfields
aiologfields使包含相关ID也变得简单。 作为日志消息中的其他上下文信息,跨await 调用和loop.create_task()调用。相关ID非常重要 精确遥测在分布式监控调试中的重要作用 微服务。
说明
再简单不过了:
aiologfields.install()
在此之后,创建的每个任务都有一个logging_fields 属性。要将字段添加到LogRecord,只需将其应用于任何任务:
t=loop.create_task(coro)t.logging_fields.correlation_id='12345'
如果使用的是生成json输出的日志处理程序 (就像logjson!),或生成输出的其他格式化程序 在LogRecord中的所有字段中,您将发现 任务的上下文将包含名为^{tt8}的附加字段$ 值为12345。
演示
这是根据其中一项测试改编的:
aiologfields.install()correlation_id=str(uuid4())logger=logging.getLogger('blah')asyncdefcf2():logger.info('blah blah')asyncdefcf1():ct=asyncio.Task.current_task()ct.logging_fields.correlation_id=correlation_idawaitcf2()loop.run_until_complete(cf1())
在cf2()内部生成的LogRecord中,有一个附加字段 correlation_id包括在内,即使该字段是在 协程函数cf1()。
如果cf2()在单独的 任务本身,因为logging_fields命名空间在 嵌套任务。