iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何使用logging为Flask增加logid
  • 387
分享到

Python如何使用logging为Flask增加logid

2024-04-02 19:04:59 387人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录logid保存与传递打印日志自动带上logid我们为了问题定位,常见做法是在日志中加入 logid,用于关联一个请求的上下文。这就涉及两个问题:1. logid 这个“全局”变量

我们为了问题定位,常见做法是在日志中加入 logid,用于关联一个请求的上下文。这就涉及两个问题:1. logid 这个“全局”变量如何保存传递。2. 如何让打印日志的时候自动带上 logid(毕竟不能每个打日志的地方都手动传入)

logid保存与传递

传统做法就是讲 logid 保存在 threading.local 里面,一个线程里都是一样的值。在 before_app_request 就生成好,logid并放进去。


import threading
 
from blueprint.hooks import hooks
 
thread_local = threading.local()
app = flask()
app.thread_local = thread_local

import uuid
 
from flask import Blueprint
from flask import current_app as app
 
hooks = Blueprint('hooks', __name__)
 
@hooks.before_app_request
def before_request():
    """
    处理请求之前的钩子
    :return:
    """
    # 生成logid
    app.thread_local.logid = uuid.uuid1().time

因为需要一个数字的 logid 所以简单使用 uuid.uuid1().time 一般并发完全够了,不会重复且趋势递增(看logid就能知道请求的早晚)。

打印日志自动带上logid

这个就是 python 日志库自带的功能了,可以使用 Filter 来实现这个需求。


import logging
 
# https://docs.Python.org/3/library/logging.html#logrecord-attributes
log_fORMat = "%(asctime)s %(levelname)s [%(threadName)s-%(thread)d] %(logid)s %(filename)s:%(lineno)d %(message)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_handler)
 
class ContextFilter(logging.Filter):
    """
    logging Filter
    """
 
    def filter(self, record):
        """
        threading local 获取logid
        :param record:
        :return:
        """
        log_id = thread_local.logid if hasattr(thread_local, 'logid') else '-'
        record.logid = log_id
 
        return True

log_format 中我们用了很多系统自带的占位符,但 %(logid)s 默认没有的。每条日志打印输出前都会过 Filter,利用此特征我们就可以把 record.logid 赋值上,最终打印出来的时候就有 logid 了。

虽然最终实现了,但因为是通用化方案,所以有些复杂了。其实官方教程中介绍了一种更加简单的方式:injecting-request-information,看来没事还得多看看官方文档。

以上就是Python如何使用logging为Flask增加logid的详细内容,更多关于Python为Flask增加logid的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python如何使用logging为Flask增加logid

本文链接: https://www.lsjlt.com/news/122611.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python如何使用logging为Flask增加logid
    目录logid保存与传递打印日志自动带上logid我们为了问题定位,常见做法是在日志中加入 logid,用于关联一个请求的上下文。这就涉及两个问题:1. logid 这个“全局”变量...
    99+
    2024-04-02
  •  Python中logging模块如何使用
    这篇文章主要讲解了“ Python中logging模块如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ Python中logging模块如何使用”吧!1.为什么要用...
    99+
    2023-06-29
  • Python日志模块logging如何使用
    这篇文章主要讲解了“Python日志模块logging如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python日志模块logging如何使用”吧!关于开发日志对于开发日志,很多程序...
    99+
    2023-06-30
  • 如何使用PySimpleGUI为程序和脚本增加GUI
    这篇文章将为大家详细讲解有关如何使用PySimpleGUI为程序和脚本增加GUI,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对于 .exe 类型的程序文件,我们可以通过双击鼠标左键打开;但对于 .py ...
    99+
    2023-06-17
  • 关于如何使用python的logging库
    logging是Python标准库中用于记录日志的模块。它提供了一种简单但灵活的方法来记录程序中的事件,以便稍后进行调试和分析。 使用logging库的基本步骤如下: 导入loggi...
    99+
    2023-05-17
    python库 python logging
  • Python中的logging模块如何使用
    一、低配logging日志总共分为以下五个级别,这个五个级别自下而上进行匹配 debug-->info-->warning-->error-->critical,默认最低级别为warning级别。1.v1import...
    99+
    2023-05-14
    Python logging
  • Python Flask JinJa2语法如何使用
    这篇文章主要介绍“Python Flask JinJa2语法如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python Flask JinJa2语法如...
    99+
    2023-07-05
  • python中logging日志模块如何使用
    这期内容当中小编将会给大家带来有关python中logging日志模块如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。基本用法下面的代码展示了logging最基本的用法。# -*-&nbs...
    99+
    2023-06-04
  • 如何使用flask将模型部署为服务
    目录1. 加载保存好的模型2. 使用flask起服务3. 发送请求并得到结果4. 效果呈现1. 加载保存好的模型 为了方便起见,这里我们就使用简单的分词模型,相关代码如下:mode...
    99+
    2024-04-02
  • python中的Flask Web表单如何使用
    这篇文章主要介绍“python中的Flask Web表单如何使用”,在日常操作中,相信很多人在python中的Flask Web表单如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”p...
    99+
    2023-06-30
  • Flask SQLALchemy如何使用
    这篇文章主要介绍“Flask SQLALchemy如何使用”,在日常操作中,相信很多人在Flask SQLALchemy如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Flask SQLALchemy如...
    99+
    2023-07-02
  • jquery如何为标签增加属性
    这篇文章主要介绍jquery如何为标签增加属性,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在jquery中,可以使用attr()方法来为标签增加属性,...
    99+
    2024-04-02
  • JS如何为promise增加abort功能
    目录概述promise race方法重新包装promiseAbortController Axios插件自带取消功能概述 Promise只有三种状态:pending、res...
    99+
    2024-04-02
  • Flask-SocketIO如何使用
    今天小编给大家分享一下Flask-SocketIO如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Flask-Sock...
    99+
    2023-07-06
  • 如何在 Python 中使用 Logging 模块快速上手
    配置 Logging 模块 Logging 模块通过 logging.basicConfig() 函数提供基本的配置。您可以使用此函数设置日志记录级别(例如 INFO 或 DEBUG)、处理程序(例如控制台或文件),以及格式化器(用于自...
    99+
    2024-02-20
    Python Logging 模块 日志记录 应用程序监视
  • Linux系统如何使用dd增加wap
    这篇文章主要为大家展示了“Linux系统如何使用dd增加wap”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统如何使用dd增加wap”这篇文章吧。使用DD命令 添加4Gswap空间[...
    99+
    2023-06-28
  • mysql如何增加用户
    这篇文章主要介绍“mysql如何增加用户”,在日常操作中,相信很多人在mysql如何增加用户问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql如何增加用户”的疑惑有所帮...
    99+
    2024-04-02
  • linux如何增加用户
    这篇文章主要介绍了linux如何增加用户,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。linux增加用户的方法:1、使用adduser方式创建用户,语法如“sudo addu...
    99+
    2023-06-22
  • oracle如何增加用户
    要在Oracle数据库中增加用户,您可以使用以下步骤:1. 连接到Oracle数据库:使用您的Oracle数据库客户端工具,如SQL...
    99+
    2023-08-23
    oracle
  • 如何在Flask中使用Flask-Script执行命令
    如何在Flask中使用Flask-Script执行命令?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、概念Flask-Scropt插件为在Flask里编写额外...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作