使用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 DataFrame 修改列的顺序实例
Apr 10 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
Python使用字典的嵌套功能详解
Feb 27 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
python超时重新请求解决方案
Oct 21 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
Python 下载Bing壁纸的示例
Sep 29 Python
Python实现微信表情包炸群功能
Jan 28 Python
Python如何把不同类型数据的json序列化
Apr 30 Python
python 常用的异步框架汇总整理
Jun 18 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
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
深入理解Python中字典的键的使用
2015/08/19 Python
Python生成随机密码的方法
2017/06/16 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
简单了解python模块概念
2018/01/11 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
剪枝的学问教学反思
2014/02/07 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
公关活动策划方案
2014/05/25 职场文书
班级读书活动总结
2014/06/30 职场文书
真诚的求职信
2014/07/04 职场文书
新店开张活动方案
2014/08/24 职场文书
Django 如何实现文件上传下载
2021/04/08 Python