Django管理员的记录活动 - Django

时间:2010-07-01 12:45:14

标签: python django logging django-admin

我需要跟踪/记录Django管理员的活动。

我知道管理员在某处存储了消息,但我不知道如何访问它们以便将它们用作简单的日志。


我正在尝试追踪以下内容:

  • 用户执行操作

  • 已提交的行动

  • 日期时间

谢谢你们。

4 个答案:

答案 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,对我来说就像一个魅力。