之前写商城项目的时候,采用的日志处理方式为在终端输出或者写入文件,这样的话,项目部署上线之后,若服务器出现错误,需要到服务器查看相关的错误日志,很不方便。后期在学习别人开源项目的时候,学习到一个开源的实时错误报告工具–sentry。用sentry来管理日志,我们可以使用sentry官网(https://sentry.io/)提供的云服务,只需要注册一个sentry账号,这样我们就可以到官网查看错误日志。首先安装扩展包 pip install raven
在django
的settings
里配置sentry
INSTALLED_APPS = (
'raven.contrib.django.raven_compat',
)
RAVEN_CONFIG = { 'dsn': 此处填对应项目的dsn, # If you are using git, you can also automatically configure the # release based on the git info. # 'release': raven.fetch_git_sha(os.path.abspath(os.pardir)), }
日志的配置:
LOGGING = {
'version': 1,
'disable_existing_loggers': True, # 是否禁用已经存在的日志器
'root': {
'level': 'WARNING',
'handlers': ['sentry'],
},
'formatters': { # 显示日志的格式
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s '
'%(process)d %(thread)d %(message)s'
},
},
'handlers': { # 日志处理的方法
'sentry': {
'level': 'ERROR', # To capture more than ERROR, change to WARNING, INFO, etc.
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
'tags': {'custom-tag': 'x'},
},
'console': { # 在终端中输出
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
},
'file':{
'level':'INFO',
'class':'logging.handler.RotaingFileHandler',
'filename':os.path.join(os.path.dirname(BASE_DIR),'logs'), # 日志文件位置
'maxBytes':300*1024*1024,
'backupCount':10,
'formatter':'verbose',
}
},
'loggers': { # 日志器
'django': { # 日志器的名称
'level': 'ERROR',
'handlers': ['sentry', 'console', 'file'],
'propagate': True, # 是否继续传递日志信息
},
}
使用方法:
import logging logger = logging.getLogger(__name__) logger.error('There was some crazy error', exc_info=True, extra={ # Optionally pass a request and we'll grab any information we can 'request': request, })
注意,添加了request才能看到发生错误的地方的上下文。
当有错误产生,可以登录官网查看错误信息,同时也会给注册时填写的邮箱发送邮件提醒。