DJango错误日志生成

前端之家收集整理的这篇文章主要介绍了DJango错误日志生成前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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')

猜你在找的Django相关文章