簡體   English   中英

Django記錄隱藏錯誤

[英]Django logging hiding errors

如何使logging.error(msg)在Django應用中顯示錯誤消息?

通常建議使用Python的日志記錄模塊來處理Django中的日志記錄輸出,但是我發現它非常麻煩和復雜,並且很容易完全禁用所有輸出。

在我的Django設置中,我具有以下日志記錄設置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

在管理命令中,我將記錄器稱為:

import logging
LOG = logging.getLogger(__name__)
LOG.error('some error happened!')

但是即使在啟用DEBUG的本地開發服務器中,我也從未在控制台中看到這些錯誤。 我究竟做錯了什么?

您可能看不到日志記錄輸出,因為您沒有為腳本中的__name__安裝記錄器。

解釋:

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

告訴日志記錄框架安裝名稱為'django.request'的單個記錄器。 因此,只有記錄到'django.request'消息才會產生任何輸出,即,如果在您的示例代碼中__name__不是'django.request' ,那么您將不會獲得任何輸出。

您可能想要的是root記錄器

'': {
    'handlers': ['mail_admins'],
    'level': 'ERROR',
    'propagate': True, # this tells logger to send logging message
                        # to its parent (will send if set to True)
}

可以為其他(django和非django)模塊安裝其他記錄器。

暫無
暫無

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

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