Python Django:如何创建特定于用户的日志?
我正在开发一个支持多用户的django web应用程序。应用程序的一个要求是具有特定于用户的日志文件。例如,如果有名为“xyz”和“abc”的用户,那么应该有与“xyz.log”和“abc.log”相对应的日志文件。到目前为止,通过在我的设置.py中添加以下内容,我可以为整个应用程序创建日志文件:Python Django:如何创建特定于用户的日志?,python,django,python-2.7,django-views,Python,Django,Python 2.7,Django Views,我正在开发一个支持多用户的django web应用程序。应用程序的一个要求是具有特定于用户的日志文件。例如,如果有名为“xyz”和“abc”的用户,那么应该有与“xyz.log”和“abc.log”相对应的日志文件。到目前为止,通过在我的设置.py中添加以下内容,我可以为整个应用程序创建日志文件: import logging logging.basicConfig(level=logging.DEBUG,format='%(asctime)s ::%(funcName)s ::[%(level
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',
},
}
}
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
如何为特定用户执行相同的操作?以下是我的相关视图。py:
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',
},
}
}
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
我想您需要向视图中的记录器添加一个处理程序。您可以为该处理程序创建一个记录器,并使用它记录与用户相关的事件。日志库是一个标准的python库,大多数文档用于在进程启动时以声明方式(例如,通过数据结构)进行配置,但是您可以调用函数来执行所需的设置,这意味着您可以在视图中执行
抱歉,我不太了解它,无法给您提供代码示例,但至少我知道在文档中的何处可以找到它 我不确定如果同一个用户在不同的会话中同时登录会发生什么情况(例如,如果一个用户在从一个浏览器登录时遇到问题,然后尝试另一个)