介绍打印日志自动带上logid
本篇文章为大家展示了日志怎么在Python中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
logid保存与传递
传统做法就是讲logid保存在线程。当地里面,一个线程里都是一样的值。在before_app_request 就生成好,logid并放进去。
import 线程 , 得到blueprint.hooks import 挂钩 , 时间=thread_local threading.local () app =,瓶() app.thread_local =, thread_local
import uuid , 得到flask import 蓝图 得到flask import  current_app as 应用 , 时间=hooks 蓝图(& # 39;钩子# 39;,,__name__) , @hooks.before_app_request def before_request (): ,,,,,, ,,,处理请求之前的钩子 ,,,:返回: ,,,,,, ,,,#,生成logid ,,,app.thread_local.logid =, uuid.uuid1 ()。时间
因为需要一个数字的logid所以简单使用uuid.uuid1 ()。时间一般并发完全够了,不会重复且趋势递增(看logid就能知道请求的早晚)。
打印日志自动带上logid
这个就是Python日志库自带的功能了,可以使用,过滤器来实现这个需求。
import 日志记录 , #,https://docs.python.org/3/library/logging.html logrecord-attributes 时间=log_format “% (asctime) s % (levelname) s [% (threadName) s - %(线程)d], % (logid) s %(文件名):% (lineno) d %(消息)s" 时间=file_handler logging.FileHandler (file_name) 时间=logger logging.getLogger () 时间=logid_filter ContextFilter () file_handler.addFilter (logid_filter) file_handler.setFormatter (logging.Formatter (log_format)) logger.addHandler ($ file_handle) , class ContextFilter (logging.Filter): ,,,,,, ,,,logging 过滤器 ,,,,,, , ,,,def 过滤器(自我,,记录): ,,,,,,,,,, ,,,,,,,threading local 获取logid ,,,,,,,:param 记录: ,,,,,,,:返回: ,,,,,,,,,, ,,,,,,,log_id =, thread_local.logid if hasattr (thread_local, & # 39; logid& # 39;), else & # 39; & # 39; ,,,,,,,record.logid =log_id , ,,,,,,,return 真正的
上述内容就是日志怎么在Python中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。