我需要跟踪/记录Django管理员的活动。
我知道管理员在某处存储了消息,但我不知道如何访问它们以便将它们用作简单的日志。
我正在尝试追踪以下内容:
用户执行操作
已提交的行动
日期时间
谢谢你们。
答案 0 :(得分:21)
我必须做类似的事情,我使用了类似的东西:
from django.contrib.admin.models import LogEntry
logs = LogEntry.objects.all() #or you can filter, etc.
for l in logs:
#perform action
你可以看到all of the attributes for LogEntry,但我认为你要找的是l.user,l.action_time和l.obj_repr(obj的名字)和l.action_flag({1:'Add ”,2: '更改',3: '删除'})。希望有所帮助!
答案 1 :(得分:11)
日志位于django使用的数据库中的django_admin_log表中。
答案 2 :(得分:5)
查看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)
答案 3 :(得分:0)
如果您不介意安装额外的依赖项,我可以推荐https://github.com/slanatech/swagger-stats/issues/50,对我来说就像一个魅力。