A comprehensive operation logging app for Django.
Project description
Django Operation Logger (django_ops_logger)
一款功能强大、即插即用的 Django 全方位操作日志记录应用。它能够在不侵入业务逻辑的情况下,记录请求、数据库查询、缓存操作、信号等的全生命周期日志。
功能特性
- 零侵入:只需在
INSTALLED_APPS和MIDDLEWARE中注册即可使用。 - 全链路追踪:通过唯一的
Trace ID将 HTTP 请求、数据库查询、缓存操作和信号串联起来。 - 高性能:使用异步队列和后台 Worker 进行批量数据库写入,确保不影响主业务性能。
- 数据脱敏:自动对敏感数据(如密码、Token)进行脱敏处理。
- 全面覆盖:
- HTTP 请求(方法、路径、用户、IP、耗时)
- 数据库查询(SQL 语句、参数、耗时)
- 缓存操作(Get/Set/Delete、命中/未命中)
- 用户认证(登录成功/失败)
- 系统启动事件
安装步骤
-
将
django_ops_logger包复制到您的 Django 项目根目录。 -
添加到
INSTALLED_APPS:
INSTALLED_APPS = [
# ...
'django_ops_logger',
]
- 添加到
MIDDLEWARE:
注意:建议将其放置在
AuthenticationMiddleware之后,以便能够捕获用户信息。
MIDDLEWARE = [
# ...
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_ops_logger.middleware.RequestLogMiddleware',
# ...
]
- 运行数据库迁移:
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_ops_logger-0.1.1.tar.gz.
File metadata
- Download URL: django_ops_logger-0.1.1.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2adee68fe20911c6504468d8bd8a5ffaecd9301dc5cbe2022b22bf9fad36a870
|
|
| MD5 |
78df78ca603959d25780f4c0fd59a5f5
|
|
| BLAKE2b-256 |
066ad8afaf87607fc1ee179e52f66a359a6be2261a3d6cc775b02fb242c0aa8a
|
File details
Details for the file django_ops_logger-0.1.1-py3-none-any.whl.
File metadata
- Download URL: django_ops_logger-0.1.1-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c666e96614f7c6bb52d2adfafefdc33670484333ad9a3cd57053a509ae732d53
|
|
| MD5 |
e76ea94306cc10e5d305cf11bb0ee334
|
|
| BLAKE2b-256 |
728ab51edb7815211ce24dfddca82a6b0fb2db264b54fc42c24fcd283e3ccc5c
|