假设需要把发生异常错误的信息写入到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解释器会打印错误类型及错误堆栈信息,但是程序也被结束了。使用异常记录就可以把错误类型和错误堆栈信息都打印出来,而且程序可以继续执行。

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将Exception异常错误堆栈信息写入日志文件

本文地址: http://www.cppcns.com/jiaoben/python/306305.html

python读取日志错误信息_使用Python将Exception异常错误堆栈信息写入日志文件相关推荐

  1. python读取oracle数据库性能_用python对oracle进行简单性能测试

    一.概述 dba在工作中避不开的两个问题,sql使用绑定变量到底会有多少的性能提升?数据库的审计功能如果打开对数据库的性能会产生多大的影响?最近恰好都碰到了,索性做个实验. sql使用绑定变量对性能的 ...

  2. python读取hadoop库数据_使用Python访问HDFS

    最近接触到大数据,对于Skpark和Hadoop的料及都停留在第一次听到这个名词时去搜一把看看大概介绍免得跟不上时代的层次. 在实际读了点别人的代码,又自己写了一些之后,虽然谈不上理解加深,至少对于大 ...

  3. python 读取数据库内存爆_解决python读取几千万行的大表内存问题

    Python导数据的时候,需要在一个大表上读取很大的结果集. 如果用传统的方法,Python的内存会爆掉,传统的读取方式默认在内存里缓存下所有行然后再处理,内存容易溢出 解决的方法: 1)使用SSCu ...

  4. python 读取地震道头数据_使用python获取(宜宾市地震信息)地震信息

    6月17日22分25分,四川省宜宾市长宁县发生了6.0级地震,成都高新减灾研究所与应急管理部门联合建设的大陆地震预警网成功预警本次地震,提前10秒向宜宾市预警,提前61秒向成都预警. 虽然自己还不能写 ...

  5. python 读取地震道头数据_【Python】OGR库(1):读取矢量数据

    OGR库是一个非常流行的处理地理空间矢量数据的开源库.它可以读取丰富的数据格式,允许用户进行几何处理.属性表操作.数据分析,是个非常强大的开源GIS库.目前OGR已集成在GDAL库中,可以说是GIS的 ...

  6. python读取csv某些行_【Python】Python 读取csv的某行或某列数据

    站长用Python写了一个可以提取csv任一列的代码,欢迎使用. Github链接 csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以 ...

  7. python读取文件名有中文_[请教]python的中文文件名处理

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 3 楼的可以用 sys.getfilesystemencoding 检测,但由於文件系统的差异,文件名 100% 无损转还是不太可,比如很多 *nix 的 ...

  8. python读取串口数据 绘图_使用Python串口实时显示数据并绘图的例子

    使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 "'E:Anaconda3Scri ...

  9. python读取网络端口数据_在Python中从SNMP端口获取数据

    我专门尝试使用PySNMP库从python中的SNMP端口读取数据.我有兴趣仅通过此库获取数据.这是因为我正在从NetSNMP迁移到PySNMP. 这是我为NetSNMP编写的工作代码,它实际上为我提 ...

  10. python读取pdf的标题_【python】使用python pdfminer3k读取pdf

    前言: 前几天学姐拿来一堆文件名乱码的pdf让帮忙整理一下,按论文标题命名 一看竟然一共250多个文件,还在不同的文件夹中,哇,想想就头疼,这时候就要发挥程序媛的智慧了,正好最近在用python写毕设 ...

最新文章

  1. hdu 5099 Comparison of Android versions 枚举题意
  2. jdbc操作步骤和preparedStatment相比Statment的好处
  3. 知识图谱实践篇(三):D2RQ SPARQL endpoint与两种交互方式
  4. rabbitMQ基本通信代码使用
  5. Spring查找方法示例
  6. tcp协议seq和ack
  7. python读yaml的库_Python读取YAML文件过程详解
  8. 简单混淆密码加密和解密
  9. +号的用法(3+5+“8”与“3”+5+8相同吗)
  10. LeetCode:35. Search Insert Position(Easy)
  11. 能够兼容ViewPager的ScrollView
  12. paip.取当天记录的方法sql跟hql hibernate
  13. 阿里平台上转的 数据模型架构规范
  14. bat批处理注册dll
  15. dx逆向建模步骤_产品温度的逆向建模的系统和方法与流程
  16. html设置鼠标移动变色,table行随鼠标移动变色示例
  17. 2022广东省安全员A证第三批(主要负责人)考试题库及在线模拟考试
  18. 论文图表录 出现几个 错误标签未定义的简单解决方法
  19. 2020年的19种最佳React Native App模板(包括5种免费)
  20. yii mysql 查询 类型转换_yii2.0数据库查询修改等方法

热门文章

  1. 监视和调整Linux网络协议栈:接收数据
  2. 开源项目:SandDance-数据可视化
  3. mysql ef 一对多 更新数据库_Entity Framework_成功针对多种数据库使用实体框架(EF)...
  4. mysql 错误 150_MySQL教程之error 150错误提示解决办法
  5. python之元组操作
  6. flutter 获取android 还是ios_Flutter完整开发实战详解(二十、 Android PlatformView 和键盘问题)...
  7. html获取url后面的参数_Golang Gin 实战(四)| URL查询参数的获取和原理分析
  8. 人脸识别撞脸名画_奇瑞全新电动SUV现身,“撞脸”保时捷,全铝车身,轴距2805mm...
  9. Maven问题-maven projects dependencies标红,但jar包事实上是没问题的
  10. 报告客户端Web应用程序中的错误时的安全问题