簡體   English   中英

如何在 Django 中記錄文件

[英]how to log a file in Django

我在 views.py 中有這個功能(與聯系表格有關)。 我需要將所有輸入和輸出記錄到一個臨時文件中,但我不知道如何在 django 中做到這一點。 出現新錯誤:找不到記錄器“farah”的處理程序

設置.py:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
    'farah': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': '/home/farah/update/farah.log',
    },
},
'loggers': {
    'django': {
        'handlers': ['farah'],
        'level': 'DEBUG',
        'propagate': True,
    },
},
}

views.py 中的函數:logger = logging.getLogger('farah') def contact(request):

form = FeedbackForm(request.POST or None)


if form.is_valid():

        recaptcha_response = request.POST.get('g-recaptcha-response')
        url = 'https://www.google.com/recaptcha/api/siteverify'
        values = {
            'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
            'response': recaptcha_response
        }
        data = urllib.urlencode(values).encode()
        req =  urllib2.Request(url, data=data)
        response = urllib2.urlopen(req)
        result = json.loads(response.read().decode())
        ''' End reCAPTCHA validation '''

        if result['success']:
    form.save()
    message = u'You have feedback\nName: %s\nEmail: %s\nPhone: %s\nCountry: %s\nFeedback:\n%s' % (
        self.cleaned_data.get['name'],
        self.cleaned_data.get['email'],
        self.cleaned_data.get['phone'],
        self.cleaned_data.get['country'],
        self.cleaned_data.get['feedback'])
    try:
        send_mail('NEW FEEDBACK', message, '', settings.DEFAULT_FROM_EMAIL) # to admin
        send_mail('THANK YOU for contacting us', 'We will be back to you promptly.', '', [self.cleaned_data.get['email'],]) # to user
        messages.info(request, 'SUCCESS! Your message has been sent!')
        form = FeedbackForm()
    except:
        messages.info(request, 'Sorry, can\'t send feedback right now.')
        else:
            messages.error(request, 'Invalid reCAPTCHA. Please try again.')


    else:
      form = FeedbackForm()
      logger.error('Log whatever you want') 



return render(request, 'contact.html', {'active_page':'contact','form': form,})

我在谷歌上查看了這個頁面,但我不知道該怎么做:

https://docs.python.org/2.3/lib/node304.html

在 settings.py 中添加日志配置 *

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/path/to/django/debug.log',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

*

在 Views.py 中添加以下代碼

import logging
logger = logging.getLogger(__name__)
def contact(request):
    ...
    logger.debug('Log whatever you want')
    # It will we logged in '/path/to/django/debug.log' the path you have specified in settings.py logging conf

相關的是在記錄器中插入要記錄的 Django 應用程序的名稱。 例如:如果您的 django 項目中的應用程序被稱為“鼠標”,並且您想將應用程序中發生的事情記錄到“文件”處理程序,則記錄器應該是這樣的:

'loggers': {
    'mouse': {
        'handlers': ['file'], 
        'level': 'DEBUG',
        'propagate': True,
    },

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM