python - 使用 python 和 django 中的日志记录用户与网站的交互

标签 python django logging

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

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

为了看看我是否可以做到这一点,我开始使用日志记录,但遇到了如何通过日志记录准确记录用户操作的问题。我的设置如下,它有效,我只是不知道用什么来代替当前在logging.info()中的字符串来记录用户的 Action 。预先感谢您提供的任何帮助。

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")

最佳答案

一开始登录 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 替换为您的应用标签,然后在您的 View 中,日志记录调用将记录到 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

关于python - 使用 python 和 django 中的日志记录用户与网站的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46676479/

相关文章:

python正则表达式匹配多行预处理器宏

css - 如何在 Django 中使用 css @media?

python - 在 App Engine 上使用 djangoforms 进行唯一值验证

python - 如果数据库连接失败,如何写入文件

java - 如何正确初始化记录器?

python - 在 Python 中使用 plyj 解析 Java 源代码

python - 覆盖Python中的内置函数

python - Django中多个数据库的路由和中间件

python-3.x - Scrapy 日志记录级别更改

python - 自动创建直方图而不是条形图