django中的用户访问日志记录

时间:2016-05-31 10:36:33

标签: django

我试图理解Correct Way™来管理django中的用户访问日志记录。我安装了axes个中间件,但它似乎只记录失败的尝试。我注意到django.contrib.auth似乎只在我查看管理界面时存储了最后一次登录。我是否必须编写自己的日志记录视图(如果我希望能够在其上执行有用的数据库操作,则创建自己的访问日志模型?)例如最小示例:

import logging
logger = logging.getLogger(my_user_access_log)
def login_view(request):
    #if user is authenticated
    logger.info(user.email) 

1 个答案:

答案 0 :(得分:2)

每当用户登录时,Django都会发出user_logged_in signal(同样的user_logged_outuser_login_failed信号)。您可以将侦听器附加到该信号,然后执行您自己的简单日志记录:

import logging

from django.contrib.auth.signals import user_logged_in
from django.dispatch import receiver

logger = logging.getLogger(__name__)

@receiver(user_logged_in)
def login_logger(sender, request, user):
    # Do whatever you want here with the information
    logger.info(user.email)