2017-10-10 53 views
1

我目前正在幫助開發一個網站。上週末有人企圖侵入網站,但失敗了。但是,由於去年夏天整個網站都被重寫了,所以沒有辦法在網站中存儲他們的動作,並在用戶放棄之前捕捉用戶的IP。在python和django中使用日誌記錄用戶與網站的交互

有沒有一種方法可以跟蹤用戶在網站中的操作(例如他們訪問的鏈接)並將其存儲到文件中(網站很小),以確保我們記錄了操作,如果有人曾試圖再次入侵它?

爲了看看我是否可以做到這一點,我開始使用日誌記錄,但遇到了我應該如何記錄用戶日誌記錄操作的問題。我的設置是在下面,它的工作原理,我只是不知道要在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") 
+0

你使用的是Apache還是nginx? –

+0

現在我沒有使用Apache,因爲安全性,我正在考慮nginx,但目前還沒有使用。 nginx會在這種情況下提供幫助嗎? – scottyboy

回答

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

+1

非常感謝您的幫助! – scottyboy

+0

@scottyboy我也想添加,你可以使用類似於apache日誌的旋轉文件。看看這裏; https://djangosnippets.org/snippets/2980/ –