使用Python将Exception异常错误堆栈信息写入日志文件


Posted in Python onApril 08, 2020

假设需要把发生异常错误的信息写入到log.txt日志文件中去:

import traceback
import logging
 
logging.basicConfig(filename='log.txt', level=logging.DEBUG,
     format='%(asctime)s - %(levelname)s - %(message)s')
 
try:
 raise Exception('发生异常错误信息')
except:
 #方案一,自己定义一个文件,自己把错误堆栈信息写入文件。
 #errorFile = open('log.txt', 'a')
 #errorFile.write(traceback.format_exc())
 #errorFile.close()
 
 #方案二,使用Python标准日志管理维护工具。
 logging.debug(traceback.format_exc())

补充知识:Python---异常处理、调用栈、异常记录、抛出错误

异常处理:

在python中,内置了一套错误处理机制:try:...except:...finally

语法:

try:
可能出现异常语句
except 错误类型1 as e:
异常处理
except 错误类型2 as e:
异常处理2
...
finally:
无论是否出错,都会执行的语句

PS:python的错误也是类,所有错误的类都继承自BaseException。

所以使用except时需注意,不但会捕获该类型的错误,还会将其子类错误一网打尽

调用栈:

若异常没有被捕获,则会一直往上抛,最后抛给解释器,解释器打印错误的堆栈信息,然后退出。

因此,查找错误的时候:

1、先看错误类型

2、从下往上找

如:

使用Python将Exception异常错误堆栈信息写入日志文件

异常记录:

如果只使用异常捕获,结果只会打印错误类型,不会打印错误堆栈信息。如果不使用异常捕获,python解释器会打印错误类型及错误堆栈信息,但是程序也被结束了。使用异常记录就可以把错误类型和错误堆栈信息都打印出来,而且程序可以继续执行。

import logging

def foo(s):
 return 10/int(s)
def bar(s)
 return foo(s)*2

def mian():
 try:
  bar('0')
 except Exception as e:
  logging.exception(e)
main()
print("END")

抛出错误:

因为错误是class,捕获一个错误就是捕获到该class的一个实例,因此,错误并不是凭空产生的,而是有意创建并抛出的,pyhton的内置函数会抛出很多类型的错误,我们自己编写的函数也可以抛出错误。

如果要抛出错误,首先根据需要,可以定义一个错误的class,选择好继承关系,然后,用raise语句抛出一个错误的实例。

class FooError(valueError):
 pass
def foo(s):
 n = int(s)
 if n == 0:
  raise FooError("invalid value :%s"%s)
 return 10/n
foo('0')

PS:只有在必要的时候才定义我们自己的错误类型,如果可以选择python已有的内置的错误类型,尽量使用python内置的错误类型。

常见的错误类型

- AttributeError 试图访问一个对象没有的属性
- IOError 输入/输出异常 无法打开文件
- IndentationError 语法错误,代码没有对齐
- keyError 访问的key字典中不存在
- NameError 使用一个还未赋值的对象的变量
- TypeError 传入对象类型与要求不合法
- ValueError 传入一个调用者不期望的值

以上这篇使用Python将Exception异常错误堆栈信息写入日志文件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python从入门到精通(DAY 1)
Dec 20 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
python实现视频读取和转化图片
Dec 10 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
Apr 25 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
Oct 19 Python
Python eval函数介绍及用法
Nov 09 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 #Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 #Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 #Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 #Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 #Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 #Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 #Python
You might like
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
说明的比较细的php 正则学习实例
2008/07/30 PHP
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python3对接mysql数据库实例详解
2019/04/30 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python如何进行时间处理
2020/08/06 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
展会邀请函范文
2014/01/26 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
十八大演讲稿
2014/05/22 职场文书
社保委托书怎么写
2014/08/02 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
焦裕禄观后感
2015/06/03 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
Vue3中的Refs和Ref详情
2021/11/11 Vue.js