日志怎么在Python中使用

  介绍

本篇文章为大家展示了日志怎么在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中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

日志怎么在Python中使用