Django 日志信息以及生产环境中的错误日志

Django log info as well as error logs on production

我正在尝试在生产环境中记录 INFO 和 ERROR 日志。 但是我不确定如何为同一个项目提及两个日志级别。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'root': {
        'level': 'WARNING',
        'handlers': ['console', ],
    },
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s '
                      '%(process)d %(thread)d %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        },
        'sns': {
            'level': 'ERROR',
            'class': 'project.abc.snshandler.SNSHandler',
            'formatter': 'verbose'

        }
    },
    'loggers': {
        'django.db.backends': {
            'level': 'ERROR',
            'handlers': ['console', ],
            'propagate': False,
        },
        'django.security.DisallowedHost': {
            'level': 'ERROR',
            'handlers': ['console', ],
            'propagate': False,
        },
        'project': {
            'level': 'ERROR',
            'handlers': ['console', 'sns'],
            'propagate': False,
        },

    },
}

在项目级别,我也想记录 INFO 日志。

您在配置中指定的日志记录级别是将记录的最低 级别。回顾一下,这里预定义的级别按重要性排序(从最低到最高):

  • DEBUG
  • INFO
  • WARNING
  • ERROR
  • CRITICAL

因此,如果您将 INFO 放入您的配置中,您将看到所有标记为 INFOWARNINGERRORCRITICAL 的日志。

如果你真的想看到INFOERROR你可以尝试写一些自定义代码,但我不鼓励它,因为它闻起来像糟糕的设计。

参考文献:

编辑

您的配置如下所示:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'root': {
        'level': 'WARNING',
        'handlers': ['console', ],
    },
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s '
                      '%(process)d %(thread)d %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        },
        'sns': {
            'level': 'ERROR',
            'class': 'project.abc.snshandler.SNSHandler',
            'formatter': 'verbose'

        }
    },
    'loggers': {
        'django.db.backends': {
            'level': 'INFO',
            'handlers': ['console', ],
            'propagate': False,
        },
        'django.security.DisallowedHost': {
            'level': 'INFO',
            'handlers': ['console', ],
            'propagate': False,
        },
        'project': {
            'level': 'INFO',
            'handlers': ['console', 'sns'],
            'propagate': False,
        },

    },
}