赞
踩
进入Django的官网,查找到日志文件这一块,将日志文件的配置文件复制setting
里面.
这个日志文件是python官方发布的,我稍微做了修改,这个也可以用到其他的python项目当中,需要再研究一下.
# 日志配置:日志模块的功能是由python团队开发的 LOGGING = { 'version': 1, 'disable_existing_loggers': False, # 日志的格式说明 'formatters': { # 详细格式:{日志等级}{发生时间}{发生模块}{行号}{报错内容} 'verbose': { 'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}', 'style': '{', }, # 简单格式 'simple': { 'format': '{levelname} {module} {lineno} {message}', 'style': '{', }, }, # 日志的过滤信息 'filters': { # 在调试的时候是否也要保留日志信息 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', }, }, # 日志的处理方式 'handlers': { # 第一种:直接在控制台输出 'console': { # 如果输出等级设置为INFO则会全部输出,如果设置DEBUG,则只会把BUGE输出 'level': 'DEBUG', # 是否调用日志过滤器 'filters': ['require_debug_true'], # 实现功能类 'class': 'logging.StreamHandler', # 输出格式为simple 'formatter': 'simple' }, # 第二种:记录到日志文件当中 'file': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', # 日志位置,日志文件名,日志保存目录必须手动创建 'filename': os.path.join(BASE_DIR, "logs/qxt.log"), # 日志文件的最大值,这里我们设置300M 'maxBytes': 300 * 1024 * 1024, # 日志文件的数量,设置最大日志数量为10 'backupCount': 10, # 日志格式:详细格式 'formatter': 'verbose' }, }, # 日志对象:可以与django进行融合 'loggers': { 'django': { # 处理方式 'handlers': ['console', 'file'], 'propagate': True, # 是否让日志信息继续冒泡给其他的日志处理系统 } } }
注意事项:配置文件中的file的filename一定不要写错了,否则会报错,一定要先创建logs文件夹
因为异常检测文件是公用的功能,所以将他放在utils文件夹中:
exceptions
文件中的代码:
# 异常处理文件 from rest_framework.views import exception_handler from django.db import DatabaseError from rest_framework.response import Response # 引入状态码文件 from rest_framework import status # 获取日志信息,名字必须与配置文件中注册的对象一致 import logging logger=logging.getLogger("django") def custom_exception_handle(exc, context): """ :@param exc:本次请求发生的异常信息 :@param context: 本次请求发送异常的执行上下文[本次请求的request对象,异常发送的时间,行号等......] :@return """ response = exception_handler(exc, context) if response is None: """来到这里只有2种情况:要么程序没出错,要么就是出错了而Django或者restframeworl不识别""" view=context["view"] if isinstance(exc,DatabaseError): # 数据库异常 logger.error('[%s]%s'%(view,exc)) response=Response({'message':'服务器内部错误'},status=status.HTTP_507_INSUFFICIENT_STORAGE) return Response
REST_FRAMWORK = {
# 异常处理
'EXCEPTION_HANDLER': 'qianxingtong.utils.exceptions.custom_exception_handler',
}
这样代码中的异常就会被捕获
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。