python try catch打印到日志_django 捕获异常和日志系统过程详解
这一块的内容很少, 异常使用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 捕获异常和日志系统过程详解相关推荐
- python安装robotframework报错_Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Python2.7已于2020年1月1日开始停用,之前RF做自动化都是基于Python2的版本. 没办法,跟随时代的脚步,我们也不得不升级以应用新的控件与功能. 升级麻烦,直接全新安装. 一.Pyth ...
- python动态图表变化_Python数据可视化 pyecharts实现各种统计图表过程详解
Python数据可视化 pyecharts实现各种统计图表过程详解 发布时间:2020-09-10 04:53:26 来源:脚本之家 阅读:78 1.pyecharts介绍 Echarts是一款由百度 ...
- python人脸识别opencv_Python基于Opencv来快速实现人脸识别过程详解(完整版)
前言 随着人工智能的日益火热,计算机视觉领域发展迅速,尤其在人脸识别或物体检测方向更为广泛,今天就为大家带来最基础的人脸识别基础,从一个个函数开始走进这个奥妙的世界. 首先看一下本实验需要的数据集,为 ...
- django异常日志_django 捕获异常和日志系统过程详解
这一块的内容很少, 异常使用try except即可, 日志只需要几行配置. 使用装饰器捕获方法内的所有异常 我使用装饰器来整个包裹一个方法, 捕获方法中的所有异常信息.并将其转为json返回客户端. ...
- python安装包的方法与图解_Python下载和安装过程详解(包含所有平台)
在开发 Python 程序之前,必须先完成一些准备工作,也就是在计算机上安装并配置 Python 解释器. 在 Windows 上安装 Python 在 Windows 上安装 Python 请按如下 ...
- python bootstrap安装_Django配置Bootstrap, js实现过程详解
1.首先在APP目录下创建一个static文件夹 如图: # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'dj ...
- python中奖号_Python分析彩票记录并预测中奖号码过程详解
0 引言 上周被一则新闻震惊到了,<2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 >,在2019年5月2日开奖的双色球中,广东中山一位彩民博中2454万元,兑奖时间截至201 ...
- python字典转dataframe_python DataFrame转dict字典过程详解
python DataFrame转dict字典过程详解 这篇文章主要介绍了python DataFrame转dict字典过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习 ...
- python calu()_python使用配置文件过程详解
这篇文章主要介绍了python使用配置文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过配置文件将变量暴露给用户修改 标准库模块con ...
最新文章
- 步入DevExpress的使用(VS)
- js 调用C#.NET后台方法 转载自:http://www.cnblogs.com/lizhao/archive/2010/11/23/1990436.html...
- 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第7章-保性能控制
- php 云技术,什么叫云技术?
- Windows Server 2003 单网卡启用×××远程外网访问功能
- 【算法竞赛学习】学术前沿趋势-作者信息关联
- 每日一题:leetcode61.旋转链表
- html5media 网页播放视频,html5media 在IE8播放视频黑屏
- 达内培训c语言,【达内C 培训教程】C语言实例 分数之和
- LongAdder和AtomicLong哪个性能更好,为什么?
- Sqlite3 数据库基本操作
- Uber无人车正式分拆:估值72.5亿美元,获孙正义和丰田10亿美元投资
- Linux系统glibc库版本信息查看
- HierachyViewer的使用
- 开漏、开集及推挽输出详解
- Web2.0 网站介绍(3) - Flickr.com
- 示波器FFT频谱分析的使用方法和注意点
- 大话——从细分市场观商业模式
- Hook技术之消息拦截(Windows Hook )
- python中PyGame的下载与安装
热门文章
- 户外lisp导向牌如何安装_深圳医院导向标识牌制作按功能可分为哪些?
- 万能高品质PSD分层促销海报,电商美工必备
- 炫彩渐变海报版式海报
- 想要有设计有格调|这波PSD时尚渐变创意海报模板,没跑
- 俯视排版类型海报|没思路?试试可临摹PSD分层模板设计吧!
- UI设计干货素材|网页设计巧妙使用背景纹理
- java socket 回调函数_请问Java网络编程如何在不使用多线程的情况下实现异步返回?...
- 怎么把照片做成消消乐_开心消消乐特效怎么制作 制造的几种方式分享
- Java内嵌秒表_【Java】Java计时器(秒表)(示例代码)
- QT保留小数点后位数