跳转到主要内容

django-tracer 为您提供了一种简单的方法,为每个请求生成并使用一个UUID

项目描述

django-tracer

Build Status

为所有Django请求生成一个UUID,用于日志记录和错误报告,以实现可追溯性。

为什么?

您为什么想使用这个小小的东西呢?好吧,在一个容器化、编排、微服务世界中,特别是有集中式日志的情况下,往往很难弄清楚事情出错的地方。

这个小小的中间件会将UUID添加到正常的Django请求对象中,您可以使用它来添加到以下内容:

  • 所有日志消息
  • 错误报告到Sentry/Rollbar等
  • 传递给其他内部服务

除了生成和附加UUID外,中间件还自动将UUID添加到响应头中,作为X-Request-ID,这样任何消费您响应的人,比如作为API,都可以用它作为错误报告的参考点。

安装

首先,您需要通过pip安装它

pip install django-tracer

然后将tracer添加到设置中的INSTALLED_APPS

然后将tracer.middleware.RequestID添加到设置中的MIDDLEWARE顶部

与标准日志的使用

import logging

from django.http import HttpResponse

logger = logging.getLogger(__name__)

def some_view(request):
    """ simple log example """
    logger.info("Whee!", extra={'request_id': request.id})
    return HttpResponse("example content")

使用请求ID的其他方法

您可能还想在几个其他地方使用ID以提高可追溯性

  • 将其作为参数传递给您生成的任何Celery任务,以便在传入请求和从它生成的任务之间建立清晰的路径
  • 将其作为头部或参数传递给其他内部API或服务
  • 将其附加到绑定的 structlog 对象,以确保它在日志输出中始终包含

谢谢!

特别感谢 Rolf Håvard Blindheim,他慷慨地将名称 django-tracer 转让我们,使我们能够将其用于此项目。

需要帮助吗?

REVSYS 可以为您的 Python、Django 和基础设施项目提供帮助。如果您对此项目有任何问题,请打开 GitHub 问题。如果您喜欢我们并想跟踪我们的动态,这里就是您可以在网上找到我们的地方

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面