这一块的内容很少, 异常使用try except即可, 日志只需要几行配置.

使用装饰器捕获方法内的所有异常

我使用装饰器来整个包裹一个方法, 捕获方法中的所有异常信息.并将其转为json返回客户端.

import functools

def catch_exception(func, code=500, *args, **kwargs):

'''

:param func:

:return:

'''

@functools.wraps(func, *args, **kwargs)

def nefen(request, *args, **kwargs):

try:

back = func(request, *args, **kwargs)

return back

except Exception as e:

# string = "捕获到异常"

# x = type(e)

#

# if x == ValueError:

# string = "数值转换异常:" + str(e)

return JsonError(error_string=str(e), code=code)

return nefen

JsonError是之前编写的json工具.

装饰器的使用方法如下.

class ReturnJson(APIView):

coreapi_fields=(

DocParam("token"),

)

@catch_exception

def get(self, request, *args, **kwargs):

params=get_parameter_dic(request)

return JsonResponse(data=params)

@catch_exception

def post(self, request, *args, **kwargs):

params=get_parameter_dic(request)

return JsonResponse(data=params)

@catch_exception

def put(self, request, *args, **kwargs):

params=get_parameter_dic(request)

return JsonResponse(data=params)

日志配置

# 首先创建日志存储路径.

import logging

import django.utils.log

import logging.handlers

log_path = os.path.join(BASE_DIR, "logs")

if not os.path.exists(log_path):

os.makedirs("logs")

# DJANGO_LOG_LEVEL=DEBUG

LOGGING = {

'version': 1,

'disable_existing_loggers': False,

'formatters': {

'verbose': {

'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'

},

'simple': {

'format': '%(levelname)s %(message)s'

},

'standard': {

'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(levelname)s]- %(message)s'

},

},

'handlers': {

'default': {

'level':'DEBUG',

'class':'logging.handlers.RotatingFileHandler',

'filename': os.path.join(BASE_DIR,'logs','all.log'), #或者直接写路径:'c:\logs\all.log',

'maxBytes': 1024*1024*5, # 5 MB

'backupCount': 5,

'formatter':'standard',

},

'console': {

'level': 'DEBUG',

'class': 'logging.StreamHandler',

'formatter': 'standard',

},

'file': {

'level':'INFO',

'class':'logging.handlers.RotatingFileHandler',

'filename': os.path.join(BASE_DIR, 'logs','debug.log'), #或者直接写路径:'c:\logs\all.log',

'maxBytes': 1024*1024*5, # 5 MB

'backupCount': 5,

'formatter':'standard',

},

},

# DEBUG(测试环境) CRITICAL(项目崩溃) ERROR(抛出异常未被捕获) WARNING(例如403) INFO(系统表现相关)

'loggers': {

'print': {

'handlers': ["file"],

'level': 'INFO',

'propagate': False

},

'ifacerecognition': {

'handlers': ['default'],

'level': 'ERROR',

},

# 'django': {

# 'handlers': ['default'],

# 'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),

# },

'django.request': {

'handlers': ['default'],

'level': 'ERROR',

},

},

}

日志配置由三部分组成

1.日志格式formatters

2.日志处理方法, 例如保存到xxx.log文件或者别的什么, 甚至可以自动发送电子邮件.

3.日志器, 也就是正式的应用, 你可以获取一个log, 手动添加log内容.

一个向log文件写入内容的例子

import logging

class ReturnJson(APIView):

coreapi_fields=(

DocParam("token"),

)

@catch_exception

def get(self, request, *args, **kwargs):

params=get_parameter_dic(request)

log=logging.getLogger("print")

log.info("asdf")

log.error("asdffff")

return JsonResponse(data=params)

至此一个django项目所需要的组成部分基本齐全了. 剩下的工作只是业务逻辑的编写.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: django 捕获异常和日志系统过程详解

本文地址: http://www.cppcns.com/jiaoben/python/265931.html

python try catch打印到日志_django 捕获异常和日志系统过程详解相关推荐

  1. python安装robotframework报错_Python3+RIDE+RobotFramework自动化测试框架搭建过程详解

    Python2.7已于2020年1月1日开始停用,之前RF做自动化都是基于Python2的版本. 没办法,跟随时代的脚步,我们也不得不升级以应用新的控件与功能. 升级麻烦,直接全新安装. 一.Pyth ...

  2. python动态图表变化_Python数据可视化 pyecharts实现各种统计图表过程详解

    Python数据可视化 pyecharts实现各种统计图表过程详解 发布时间:2020-09-10 04:53:26 来源:脚本之家 阅读:78 1.pyecharts介绍 Echarts是一款由百度 ...

  3. python人脸识别opencv_Python基于Opencv来快速实现人脸识别过程详解(完整版)

    前言 随着人工智能的日益火热,计算机视觉领域发展迅速,尤其在人脸识别或物体检测方向更为广泛,今天就为大家带来最基础的人脸识别基础,从一个个函数开始走进这个奥妙的世界. 首先看一下本实验需要的数据集,为 ...

  4. django异常日志_django 捕获异常和日志系统过程详解

    这一块的内容很少, 异常使用try except即可, 日志只需要几行配置. 使用装饰器捕获方法内的所有异常 我使用装饰器来整个包裹一个方法, 捕获方法中的所有异常信息.并将其转为json返回客户端. ...

  5. python安装包的方法与图解_Python下载和安装过程详解(包含所有平台)

    在开发 Python 程序之前,必须先完成一些准备工作,也就是在计算机上安装并配置 Python 解释器. 在 Windows 上安装 Python 在 Windows 上安装 Python 请按如下 ...

  6. python bootstrap安装_Django配置Bootstrap, js实现过程详解

    1.首先在APP目录下创建一个static文件夹 如图: # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'dj ...

  7. python中奖号_Python分析彩票记录并预测中奖号码过程详解

    0 引言 上周被一则新闻震惊到了,<2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 >,在2019年5月2日开奖的双色球中,广东中山一位彩民博中2454万元,兑奖时间截至201 ...

  8. python字典转dataframe_python DataFrame转dict字典过程详解

    python DataFrame转dict字典过程详解 这篇文章主要介绍了python DataFrame转dict字典过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习 ...

  9. python calu()_python使用配置文件过程详解

    这篇文章主要介绍了python使用配置文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过配置文件将变量暴露给用户修改 标准库模块con ...

最新文章

  1. 步入DevExpress的使用(VS)
  2. js 调用C#.NET后台方法 转载自:http://www.cnblogs.com/lizhao/archive/2010/11/23/1990436.html...
  3. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第7章-保性能控制
  4. php 云技术,什么叫云技术?
  5. Windows Server 2003 单网卡启用×××远程外网访问功能
  6. 【算法竞赛学习】学术前沿趋势-作者信息关联
  7. 每日一题:leetcode61.旋转链表
  8. html5media 网页播放视频,html5media 在IE8播放视频黑屏
  9. 达内培训c语言,【达内C  培训教程】C语言实例 分数之和
  10. LongAdder和AtomicLong哪个性能更好,为什么?
  11. Sqlite3 数据库基本操作
  12. Uber无人车正式分拆:估值72.5亿美元,获孙正义和丰田10亿美元投资
  13. Linux系统glibc库版本信息查看
  14. HierachyViewer的使用
  15. 开漏、开集及推挽输出详解
  16. Web2.0 网站介绍(3) - Flickr.com
  17. 示波器FFT频谱分析的使用方法和注意点
  18. 大话——从细分市场观商业模式
  19. Hook技术之消息拦截(Windows Hook )
  20. python中PyGame的下载与安装

热门文章

  1. 户外lisp导向牌如何安装_深圳医院导向标识牌制作按功能可分为哪些?
  2. 万能高品质PSD分层促销海报,电商美工必备
  3. 炫彩渐变海报版式海报
  4. 想要有设计有格调|这波PSD时尚渐变创意海报模板,没跑
  5. 俯视排版类型海报|没思路?试试可临摹PSD分层模板设计吧!
  6. UI设计干货素材|网页设计巧妙使用背景纹理
  7. java socket 回调函数_请问Java网络编程如何在不使用多线程的情况下实现异步返回?...
  8. 怎么把照片做成消消乐_开心消消乐特效怎么制作 制造的几种方式分享
  9. Java内嵌秒表_【Java】Java计时器(秒表)(示例代码)
  10. QT保留小数点后位数