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
放入您的配置中,您将看到所有标记为 INFO
、WARNING
、ERROR
和 CRITICAL
的日志。
如果你真的想看到只INFO
和ERROR
你可以尝试写一些自定义代码,但我不鼓励它,因为它闻起来像糟糕的设计。
参考文献:
- https://docs.djangoproject.com/en/dev/topics/logging/
- https://docs.python.org/3/library/logging.html?highlight=logging#module-logging
编辑
您的配置如下所示:
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,
},
},
}
我正在尝试在生产环境中记录 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
放入您的配置中,您将看到所有标记为 INFO
、WARNING
、ERROR
和 CRITICAL
的日志。
如果你真的想看到只INFO
和ERROR
你可以尝试写一些自定义代码,但我不鼓励它,因为它闻起来像糟糕的设计。
参考文献:
- https://docs.djangoproject.com/en/dev/topics/logging/
- https://docs.python.org/3/library/logging.html?highlight=logging#module-logging
编辑
您的配置如下所示:
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,
},
},
}