使用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利用turtle库绘制彩虹代码示例
Dec 20 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
Python3使用SMTP发送带附件邮件
Jun 16 Python
Sanic框架Cookies操作示例
Jul 17 Python
python scp 批量同步文件的实现方法
Jan 03 Python
只需7行Python代码玩转微信自动聊天
Jan 27 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
Python使用tkinter实现小时钟效果
Feb 22 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
Python+pyaudio实现音频控制示例详解
Jul 23 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处理json时中文问题的解决方法
2011/04/12 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
深入理解Python3中的http.client模块
2017/03/29 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
金蝶的一道SQL笔试题
2012/12/18 面试题
数控专业自荐书范文
2014/03/16 职场文书
家长通知书教师评语
2014/04/17 职场文书
教师求职自荐信范文
2015/03/04 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript