使用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实现机器人行走效果
Jan 29 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
Pytorch to(device)用法
Jan 08 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
django form和field具体方法和属性说明
Jul 09 Python
python 实现批量图片识别并翻译
Nov 02 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 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 autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
python实现滑雪游戏
2020/02/22 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
Python如何获取文件路径/目录
2020/09/22 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
应届专科生个人的自我评价
2014/01/05 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
劳动模范事迹材料
2014/01/19 职场文书
语文教学随笔感言
2014/02/18 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
财务管理专业自荐书
2014/09/02 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
房屋产权证明书
2014/10/15 职场文书
小学班主任评语
2014/12/29 职场文书
2019年最新借条范本!
2019/07/08 职场文书