当前位置: 移动技术网 > IT编程>脚本编程>Python > DJango错误日志生成

DJango错误日志生成

2019年09月23日  | 移动技术网IT编程  | 我要评论

4399奥奇传说作弊器,精心的近义词,揪痧家园

0922自我总结

django错误日志生成

setting.py设置

logging = {
    'version': 1,
    'disable_existing_loggers': false,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
        },
    },
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.requiredebugtrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'debug',
            'filters': ['require_debug_true'],
            'class': 'logging.streamhandler',
            'formatter': 'simple'
        },
        'file': {
            # 实际开发建议使用warning
            'level': 'info',
            'class': 'logging.handlers.rotatingfilehandler',
            # 日志位置,日志文件名,日志保存目录必须手动创建,注:这里的文件路径要注意base_dir
            'filename': os.path.join(os.path.dirname(base_dir), "logs/luffy.log"),
            # 日志文件的最大值,这里我们设置300m
            'maxbytes': 300 * 1024 * 1024,
            # 日志文件的数量,设置最大日志数量为10
            'backupcount': 10,
            # 日志格式:详细格式
            'formatter': 'verbose',
            # 编码
            'encoding': 'utf-8'
        },
    },
    # 日志对象
    'loggers': {
        'django': {
            'level': 'info',
            'handlers': ['console', 'file'],
            'propagate': true,  # 是否让日志信息继续冒泡给其他的日志处理系统
        },
    }
}

exception.py(抛错设置)

# rest_framework.views 下的 exception_handler 处理了所有 drf可控范围内的异常
from rest_framework.views import exception_handler as drf_exception_handler
# drf的异常还是交给 drf_exception_handler,我们只需要处理 drf未处理的异常
from rest_framework.response import response
from .response import apiresponse
# 自定义异常句柄的原因:要通过 logging 记录异常日志
from .logging import logger
def exception_handler(exc, context):
    response = drf_exception_handler(exc, context)

    if response is none:
        # drf处理不了的异常
        error_info = '【%s】【%s】' % (context['view'], exc)
        logger.error(error_info)
        # return response({
        #     'exception': '服务器异常',
        # }, status=500)
        return apiresponse(1, '服务器异常', status=500)

    response.exception = true
    return response

logging.py

import logging
logger = logging.getlogger('django')

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网