使用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实现的递归神经网络简单示例
Aug 11 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
Java与Python两大幸存者谁更胜一筹呢
Apr 12 Python
python获取url的返回信息方法
Dec 17 Python
利用nohup来开启python文件的方法
Jan 14 Python
详解python3 + Scrapy爬虫学习之创建项目
Apr 12 Python
python画图把时间作为横坐标的方法
Jul 07 Python
pandas DataFrame创建方法的方式
Aug 02 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
如何用python免费看美剧
Aug 11 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 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 实现多服务器共享 SESSION 数据
2009/08/15 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
JavaScript如何操作css
2020/10/24 Javascript
Python中运行并行任务技巧
2015/02/26 Python
Python yield与实现方法代码分析
2018/02/06 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
利用python汇总统计多张Excel
2020/09/22 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
2014年五一活动策划方案
2014/03/15 职场文书
合作意向书模板
2014/03/31 职场文书
答谢会策划方案
2014/05/12 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
小学生毕业评语
2014/12/26 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书