了解 django 的日志记录

Posted

技术标签:

【中文标题】了解 django 的日志记录【英文标题】:Understanding django's logging 【发布时间】:2017-09-23 13:20:08 【问题描述】:

我对 django 处理日志的方式有点困惑。我的设置中有记录器的此设置:

记录设置

LOGGING = 
    ...
    'handlers': 
        'console': 
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
        ,
        'file': 
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': LOG_BASE_DIRECTORY + '/django.log',
            'maxBytes': LOGFILE_SIZE,
            'backupCount': LOGFILE_COUNT,
            'formatter': 'verbose'
        ,
        'mail_admins': 
             'level': 'ERROR',
             #'filters': ['require_debug_false'],
             'class': 'django.utils.log.AdminEmailHandler'
        
    ,
    'loggers': 
        'django': 
            'handlers': ['file','mail_admins'],
            'level': 'INFO',
            'propagate': True,
        ,
        'app1': 
            'handlers': ['file','mail_admins'],
            'level': 'DEBUG',
            'propagate': True,
        ,

        ...
    ,

正如所见,我为 django 和应用程序日志定义了 2 个处理程序,文件和 邮件管理员。文件的日志级别是调试。因此,我假设所有调试及以上的日志都应使用此处理程序。 mail_admins 的级别为错误。我看到的问题是,如果在电子邮件处理程序运行并发送邮件时出现 500 个错误,则文件上没有日志记录。

【问题讨论】:

【参考方案1】:

对于记录错误,您需要将它们记录在代码中。像这样的

import logging

try:
    # your code here
except Exception as e:
    logging.getLogger("logger_name").error(repr(e))

请参阅 this official doc link 或 this article 以获取视频和工作 github 代码。

【讨论】:

以上是关于了解 django 的日志记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Django Rest Framework 在 Django 中进行操作日志记录

为啥这个 Django 日志记录不起作用?

如何在 Cloud Run 的日志中显示 django 日志记录和错误日志?

Django 1.3 日志记录:未记录 500 个错误

Django 日志记录错误:未创建日志文件

Django 详细请求日志记录