使用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数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
pyside写ui界面入门示例
Jan 22 Python
python实现将pvr格式转换成pvr.ccz的方法
Apr 28 Python
让python 3支持mysqldb的解决方法
Feb 14 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
Nov 21 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
详解python读取和输出到txt
Mar 29 Python
Python3模拟curl发送post请求操作示例
May 03 Python
python验证身份证信息实例代码
May 06 Python
python实现支付宝转账接口
May 07 Python
python的列表List求均值和中位数实例
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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python调用java的Webservice示例
2014/03/10 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
python numpy元素的区间查找方法
2018/11/14 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
Python使用Pygame绘制时钟
2020/11/29 Python
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
市场部岗位职责范本
2015/04/15 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python