iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >logging怎么在Python中使用
  • 123
分享到

logging怎么在Python中使用

2023-06-14 09:06:31 123人浏览 八月长安

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

摘要

本篇文章为大家展示了logging怎么在python中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。logid保存与传递传统做法就是讲 logid 保存在 threading.local 里面,

本篇文章为大家展示了logging怎么在python中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

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 Blueprintfrom flask import current_app as app hooks = Blueprint('hooks', __name__) @hooks.before_app_requestdef 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-attributeslog_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

上述内容就是logging怎么在Python中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网Python频道。

--结束END--

本文标题: logging怎么在Python中使用

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

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

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

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

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作