使用python和django中的记录来记录用户与网站的交互

时间:2017-10-10 21:41:28

标签: python django logging

我目前正致力于帮助开发网站。上周末有人试图入侵网站,但失败了。然而,由于整个网站在去年夏天被重写,因此没有办法在网站中存储他们的动作并在他们放弃之前捕获用户的IP。

是否有办法在网站中跟踪用户操作(例如他们访问的链接)并将其存储到文件中(网站很小),以确保我们记录了操作,如果有人试图再次破解它吗?

为了看看我是否可以这样做,我开始使用日志记录,但遇到了我应该如何使用日志记录来记录用户操作的问题。我的设置在下面,它可以工作,我只是不知道用什么代替当前在logging.info()里面的字符串来记录用户的动作。提前感谢您提供的任何帮助。

from ipware.ip import get_ip
import logging

def IPCatcher(request):
    ip = get_ip(request)
if ip is not None:
    print("We have an IP address for user")
    print(ip)
    logging.basicConfig(filename='log_recording.txt',
                        level=logging.DEBUG,format='%(asctime)s %(message)s',
                                                          datefmt='%m/%d/%Y %I:%M:%S %p')
    logging.info('This is working')

else:
    print("we don't have an IP address for user")

1 个答案:

答案 0 :(得分:1)

一开始登录Django可能相当令人生畏,但是有很多内容可以在网上阅读。为了概述,设置logging in django的最简单方法是从配置日志记录的settings.py文件开始;

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/path/to/django/debug.log',
        },
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
        }
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'my_app': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

my_app替换为您的应用标签&然后在您的视图中,日志记录调用将记录到file处理程序(请注意mail_admins处理程序,该处理程序将向settings.ADMINS发送电子邮件。)

import logging

from ipware.ip import get_ip

# This gets a named logger, which should match your appname
logger = logging.getLogger(__name__)  

def IPCatcher(request):
    ip = get_ip(request)
    if ip is not None:
        logger.info('This is working')

我还建议观看这个关于这个主题的教程; https://www.youtube.com/watch?v=BsbtPqQdo3Q