Django使用 Python 内置的 logging 模块实现它自己的日志系统。其中主要包含四个模块:
在日志记录中,单个日志称为日志记录,日志记录根据其重要性有 7 个级别的日志级别。
名称 | 设定值 | 记录范围 |
NOTSET | 0 | 设定值的记录(所有记录) |
DEBUG | 10 | 操作检查等调试记录 |
INFO | 20 | 正常运行记录 |
WARNING | 30 | 警告记录 |
ERROR | 40 | 错误等严重问题 |
CRITICAL | 50 | 停止等致命问题 |
如果在代码中指定任意一个logger,执行与日志级别同名的方法,就会输出日志。
import logging
…
logger = logging.getLogger('开发')
logger.info('Hello Python World!')
Django 的默认日志记录。 这会在每个站点向站点管理员发送一封电子邮件HTTP 500 错误。
根据 DEBUG,所有其他日志记录要么发送到控制台 (DEBUG=True) 或丢弃 (DEBUG=False) 通过 require_debug_true 过滤器。
DEFAULT_LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'formatters': {
'django.server': {
'()': 'django.utils.log.ServerFormatter',
'format': '[%(server_time)s] %(message)s a',
}
},
'handlers': {
'console': {
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'django.server': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'django.server',
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django': {
'handlers': ['console', 'mail_admins'],
'level': 'INFO',
},
'django.server': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False,
},
}
}
包含配置信息的数据结构。该数据结构的内容将作为参数传递给中描述的配置方法 LOGGING_CONFIG。
LOGGING = {}
将日志保存到文件中。
settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/django_menu/debug.log',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
# 将日志打印到控制台
import os
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
},
},
'root': {
'handlers': ['console'],
'level': 'WARNING',
},
'loggers': {
'django': {
'handlers': ['console'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
'propagate': False,
},
},
}
views.py
import logging
logger = logging.getLogger(__name__) # 获取一个logger对象
def my_view(request, arg1, arg):
...
if bad_mojo:
logger.debug('记录一个调试信息')
logger.info('记录一个正常信息')
logger.warning('记录一个警告信息')
logger.error('记录一个错误信息')
logger.critical('记录一个严重系统错误信息')
设置LOGGING_CONFIG为None,将跳过日志记录配置过程。
LOGGING_CONFIG = 'logging.config.dictConfig'
留言与评论(共有 0 条评论) “” |