2013-06-28 64 views
0

我正在開發一個支持多個用戶的django web應用程序。應用程序的一個要求是具有用戶特定的日誌文件。例如,如果有用戶名爲'xyz'和'abc',那麼應該有對應'xyz.log'和'abc.log'的日誌文件。截至目前,我可以通過在我的settings.py增加了以下創建爲整個應用程序日誌文件:Django:如何創建用戶特定的日誌?

import logging 
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s ::%(funcName)s ::[%(levelname)s] ::%(message)s',datefmt='%a, %d %b %Y %H:%M:%S',filename='/project.log', filemode='w') 
. 
. 
. 
//some other settings 
. 
. 
. 
LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     }, 

     'console':{ 
      'level':'ERROR', 
      'class':'logging.StreamHandler' 
      } 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 

     'django': { 
     'handlers':['console'], 
     'propagate': True, 
     'level':'ERROR', 
    }, 
    } 
} 

我怎樣才能做同樣的爲特定用戶?以下是我的相關views.py

def login_check(request): 
    if request.method == 'POST': 
     username = request.POST['username'] 
     password = request.POST['password'] 
     try: 
      user = Application_User.objects.get(user_name=username, passwd=password) 
     except Application_User.DoesNotExist: 
      error_message = "**Incorrect login. Please try again." 
      context = {'error_message' : error_message} 
      return render_to_response('vsawebauto/login.html',context, context_instance=RequestContext(request)) 
     else: 
      //this is where I need to create the logger file and begin user specific logging 

回答

0

我猜你需要一個處理程序添加到該視圖中的記錄。您可以爲該處理程序創建一個記錄器,並將其用於記錄與用戶相關的事件。日誌庫是一個標準的python庫,大多數文檔都是以聲明的方式(例如,通過數據結構)在啓動時進行配置,但您可以調用函數來執行所需的設置,這意味着您可以在風景。

http://docs.python.org/2/library/logging.html#logging.Logger.addHandler
http://docs.python.org/2/library/logging.html#handler-objects
http://docs.python.org/2/library/logging.handlers.html#filehandler

對不起,我不知道它不夠好,給你一個代碼示例,但至少我知道在哪裏可以找到它的文檔。

我不確定如果同時登錄來自不同會話的同一用戶會發生什麼情況(例如,如果用戶無法從一個瀏覽器登錄並嘗試另一個登錄)。

相關問題