在Django项目中触发python记录器

时间:2016-04-04 12:33:13

标签: python django logging

我有一个Django项目,它具有以下功能,我想在其中触发记录器:

def remove_email_from_list(list_id, email_address):
    subscriber_hash = hashlib.md5(email_clean)
    url = '%s/lists/%s/members/%s' % (settings.API_URL, list_id, subscriber_hash.hexdigest())
    r = requests.delete(url, auth=HTTPBasicAuth('user', settings.API_KEY),)
    if r.status_code != 204:
        logging.critical("Executed mailchimp api call, wrong status code. Message body = " + r.text)
    return r

但是,我尝试了所有这些记录器来捕获此错误并发送电子邮件,但不知何故记录器未被触发。你们知道我做错了吗?

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

1 个答案:

答案 0 :(得分:3)

我想如果你直接拨打logging.critical,这是通过默认记录器完成的。 首先使用(在py文件头部的某处)创建一个命名的记录器:

logger = logging.getLogger(__name__)

然后致电

logger.critical(...)

然后应该使用记录器和您所在文件的包名称

请参阅Logger Objects Documentation