【问题标题】:How do I send logging info in the body of an email?如何在电子邮件正文中发送日志信息?
【发布时间】:2013-01-25 11:37:39
【问题描述】:

我正在使用 Django 日志记录。以下是我当前调用 Django 日志记录的方式。

logger = logging.getLogger(__name__)
.
.
.
logger.info("Database results") 

下面是我在 settings.py 文件中的 Django 日志记录配置。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'default': {
            'format': '[%(asctime)s] %(levelname)s:%(message)s'
        },
    },
    'handlers': {
        'email_admins': {
            'level': 'INFO',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': False,
        },
        'admin_console': {
            'level':'DEBUG',
            'class':'logging.StreamHandler',
            'formatter': 'default'
        },
        'null': {
            'level':'DEBUG',
            'class':'django.utils.log.NullHandler',
            'formatter': 'default',
        },
        'file_handler': {
            'level': 'DEBUG',
            'formatter':'default',
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename':'logs/prj_log',
            'when':'midnight',
            'interval':1,
        },
        'request_handler': {
                'level':'ERROR',
                'class':'logging.handlers.RotatingFileHandler',
                'filename': 'logs/django_request.log',
                'maxBytes': 1024*1024*5, # 5 MB
                'backupCount': 5,
                'formatter':'default',
        },
    },
    'loggers': {
        '': {
            'handlers': ['email_admins', 'file_handler', 'admin_console'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'django': {
            'handlers':['null'],
            'propagate': True,
            'level':'INFO',
        },
        'django.request': { 
            'handlers': ['email_admins', 'request_handler'],
            'level': 'ERROR',
            'propagate': False,
        },
    }
}

我收到一封以Database results 为主题的电子邮件。如何在电子邮件正文中添加更多信息?

【问题讨论】:

标签: django


【解决方案1】:

django.utils.log.AdminEmailHandler 仅将堆栈跟踪记录为电子邮件消息(有关详细信息,请参阅处理程序代码)。因此,如果您想在信息级别记录某些内容,则需要编写自己的处理程序来发送电子邮件。

即使使用自定义处理程序,您也不能同时记录两个参数(例如主题和消息文本)。由于您可能想要记录序列化对象,因此您必须对主题进行硬编码

【讨论】:

    【解决方案2】:
    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'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
            },
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      相关资源
      最近更新 更多