gpt4 book ai didi

python - Django:如何记录管理命令的异常?

转载 作者:太空狗 更新时间:2023-10-30 02:12:19 24 4
gpt4 key购买 nike

我没有收到来自命令错误的邮件。

python deebate\manage.py test_logging_errors --settings=deebate.settings.local --traceback

命令:

# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand, CommandError

import logging
logger = logging.getLogger(__name__)

class Command(BaseCommand):
help = "test unicode and logging"

def handle(self, *args, **options):
print(u"|`»|Ð".encode('ascii'))

显然这会抛出

UnicodeEncodeError: 'ascii' codec can't encode character u'\xbb' in position 2: ordinal not in range(128)

我有 DEBUG = False

日志设置是

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
# I always add this handler to facilitate separating loggings
'debug_log_file':{
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(ROOT_PROJECT_INTERNAL, 'logs', 'debug.log'),
'maxBytes': '16777216', # 16megabytes
'backupCount': 10,
'formatter': 'verbose'
},
'warning_log_file':{
'level': 'WARNING',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(ROOT_PROJECT_INTERNAL, 'logs', 'warning.log'),
'maxBytes': '16777216', # 16megabytes
'backupCount': 10,
'formatter': 'verbose'
},
'django_log_file':{
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(ROOT_PROJECT_INTERNAL, 'logs', 'django.log'),
'maxBytes': '16777216', # 16megabytes
'backupCount': 10,
'formatter': 'verbose'
},

},
'loggers': {
'django.request': {
'handlers': ['mail_admins', 'django_log_file'],
'level': 'ERROR',
'propagate': True,
},
'core': {
'handlers': ['mail_admins', 'debug_log_file', 'warning_log_file'],
'level': 'DEBUG',
'propagate': True,
},
}
}

然后我也有 Sentry。

debug.logwarning.log 由应用定期填充。

我如何捕获该异常?为什么 Django 没有捕捉到它?

最佳答案

我很感激 this article其中解释了如何设置您的 AdminEmailHandler,以及如何修改您的 manage.py 以捕获异常并记录它们,以便所有管理命令都将发送电子邮件。

关于python - Django:如何记录管理命令的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16777082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com