【问题标题】:Django: How to create user specific logs?Django:如何创建用户特定的日志?
【发布时间】:2013-06-28 16:12:21
【问题描述】:

我正在开发一个支持多个用户的 django Web 应用程序。应用程序的一项要求是具有用户特定的日志文件。例如,如果有名为“xyz”和“abc”的用户,那么应该有对应于“xyz.log”和“abc.log”的日志文件。到目前为止,我可以通过在我的 settings.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',
    },
    }
}

我怎样才能为特定用户做同样的事情?以下是我的相关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

【问题讨论】:

    标签: python django python-2.7 django-views


    【解决方案1】:

    我猜你需要在视图中为记录器添加一个处理程序。您可以为该处理程序创建一个记录器,并将其用于记录与用户相关的事件。日志库是一个标准的 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

    对不起,我不太了解它,无法给你一个代码示例,但至少我知道在文档中的哪里可以找到它。

    我不确定如果同一用户从不同会话同时登录会发生什么(例如,如果用户在从一个浏览器登录时遇到问题,然后尝试另一个浏览器)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2022-09-25
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多