Skip to main content

A comprehensive operation logging app for Django.

Project description

Django Operation Logger (django_ops_logger)

一款功能强大、即插即用的 Django 全方位操作日志记录应用。它能够在不侵入业务逻辑的情况下,记录请求、数据库查询、缓存操作、信号等的全生命周期日志。

功能特性

  • 零侵入:只需在 INSTALLED_APPSMIDDLEWARE 中注册即可使用。
  • 全链路追踪:通过唯一的 Trace ID 将 HTTP 请求、数据库查询、缓存操作和信号串联起来。
  • 高性能:使用异步队列和后台 Worker 进行批量数据库写入,确保不影响主业务性能。
  • 数据脱敏:自动对敏感数据(如密码、Token)进行脱敏处理。
  • 全面覆盖
    • HTTP 请求(方法、路径、用户、IP、耗时)
    • 数据库查询(SQL 语句、参数、耗时)
    • 缓存操作(Get/Set/Delete、命中/未命中)
    • 用户认证(登录成功/失败)
    • 系统启动事件

安装步骤

  1. django_ops_logger 包复制到您的 Django 项目根目录。

  2. 添加到 INSTALLED_APPS

INSTALLED_APPS = [
    # ...
    'django_ops_logger',
]
  1. 添加到 MIDDLEWARE

注意:建议将其放置在 AuthenticationMiddleware 之后,以便能够捕获用户信息。

MIDDLEWARE = [
    # ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django_ops_logger.middleware.RequestLogMiddleware', 
    # ...
]
  1. 运行数据库迁移:
python manage.py makemigrations django_ops_logger
python manage.py migrate

配置说明

settings.py 中添加 DJANGO_OPS_LOGGER 配置项以自定义行为:

DJANGO_OPS_LOGGER = {
    'ENABLED': True,             # 总开关
    'SQL_LOG_ENABLE': True,      # 记录数据库查询
    'JWT_SECRET_KEY': 'jwt key', # 必须和setting一致
    'CACHE_LOG_ENABLE': False,   # 记录缓存操作(默认关闭,因为日志量可能很大)
}

使用方法

安装完成后,日志记录器会自动工作。您可以通过 Django Admin(如果已注册)或直接通过 OperationLog 模型查询日志。

查询日志

from django_ops_logger.models import OperationLog

# 获取特定 Trace ID 的所有日志
logs = OperationLog.objects.filter(trace_id='your-trace-id')

# 获取慢查询(耗时超过 500ms)
slow_queries = OperationLog.objects.filter(
    operation_type='db', 
    duration__gt=500
)

手动记录日志

您也可以在视图或业务逻辑中手动记录自定义事件:

from django_ops_logger.queue import enqueue_log
from django_ops_logger.models import OperationLog
from django_ops_logger.context import TrackerContext
from django.utils import timezone

def my_custom_logic():
    # ... 业务逻辑 ...
    
    enqueue_log(
        trace_id=TrackerContext.get_trace_id(),
        operation_type=OperationLog.OpType.CUSTOM,
        level='INFO',
        start_time=timezone.now(),
        details={'action': 'payment_processed', 'amount': 100}
    )

架构设计

  • 上下文追踪:使用 contextvars 在请求生命周期内维护 trace_id
  • 中间件:捕获请求/响应周期,并处理异常日志。
  • 包装器 (Wrappers):Monkey-patch 数据库和缓存后端以拦截底层操作。
  • 异步队列:所有日志被推送到内存队列中,并由后台线程批量刷新到数据库,以确保对响应时间的影响降至最低。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_ops_logger-0.1.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_ops_logger-0.1.0-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file django_ops_logger-0.1.0.tar.gz.

File metadata

  • Download URL: django_ops_logger-0.1.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for django_ops_logger-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d5625dc20d4c71a5a19903af2a949b1912eb8225a69a49308a549f0783dfc3af
MD5 518979e6161fcf673b1dece195c3deaa
BLAKE2b-256 c7d1afe1ee980fb3cbdd8bec9b226367d6bfff3fbd78e32d22d63c7520b45913

See more details on using hashes here.

File details

Details for the file django_ops_logger-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_ops_logger-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 913ba17bac4eebe7937822cd30f98f951ec80d4cfc0ee4efbc6040ec414ac7f3
MD5 4ea5ac6f0d5f0c7318d62dbe5855b562
BLAKE2b-256 2d430bcebbdd50404ac46933afdeb52a9d1e27eec80166eb438ed822ad80fae8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page