Rad*_*Hex 26 python django logging django-admin
我需要跟踪/记录Django管理员的活动.
我知道管理员在某处存储了消息,但我不知道如何访问它们以便将它们用作简单的日志.
我正在尝试跟踪以下内容:
用户执行操作
已采取行动
行动日期
多谢你们.
Kat*_*ine 21
我不得不做类似的事情,我使用了这样的东西:
from django.contrib.admin.models import LogEntry
logs = LogEntry.objects.all() #or you can filter, etc.
for l in logs:
#perform action
Run Code Online (Sandbox Code Playgroud)
您可以看到LogEntry的所有属性,但我认为您要查找的是l.user,l.action_time和l.obj_repr(obj的名称)和l.action_flag({1:'Add', 2: '更改',3: '删除'}).希望有所帮助!
查看LogEntry类,该类存储管理员内部操作的日志.
您可以像这样使用它在日志中插入自定义条目:
from settings import LOG_SIZE, LOG_THRESHOLD
from django.contrib.admin.models import LogEntry
if not LogEntry._meta.installed:
raise ImproperlyConfigured("You'll need to put 'django.contrib.admin' in your INSTALLED_APPS setting before you can use the admin application.")
def log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
# limit log size
log_count = LogEntry.objects.count()
if log_count > LOG_THRESHOLD:
to_delete = LogEntry.objects.all()[LOG_SIZE:log_count]
#FIXME (!?): to_delete.delete()
for d in to_delete:
d.delete()
LogEntry.objects.log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20449 次 |
| 最近记录: |