Python traceback 模块, 打印异常信息

Python感觉是模仿Java, 到处都需要加try..catch...。

这里记录一下用法,方便后续使用。

 1 # -*- coding:utf-8 -*-
 2
 3 import os
 4 import logging
 5 import traceback
 6
 7 #设置log, 这里使用默认log
 8 logging.basicConfig(
 9         level=logging.INFO,
10         format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
11         datefmt='[%Y-%m_%d %H:%M:%S]',
12         filename=os.path.dirname(os.path.realpath(__file__)) + "/" + 'test.log',
13         filemode='a')
14
15 a=10
16 b=0 #设置为0, 走异常流程; 否则, 走正常流程
17
18 try:
19     res=a/b
20     logging.info("exec success, res:" + str(res))
21 except Exception,e:
22     #format_exc()返回字符串,print_exc()则直接给打印出来
23     traceback.print_exc()
24     logging.warning("exec failed, failed msg:" + traceback.format_exc())

 

logging默认打印级别是warning.

format_exc()返回字符串,print_exc()则直接给打印出来

日志打印:

[2017-11_17 07:51:02] trace.py[line:24] WARNING exec failed, failed msg:Traceback (most recent call last):
  File "trace.py", line 19, in <module>
    res=a/b
ZeroDivisionError: integer division or modulo by zero
时间: 2024-10-01 00:50:39

Python traceback 模块, 打印异常信息的相关文章

Python中捕捉详细异常信息的代码示例_python

大家在开发的过程中可能时常碰到一个需求,需要把Python的异常信息输出到日志文件中. 网上的办法都不太实用,下面介绍一种实用的,从Python 2.7源码中扣出来的. 废话不说 直接上代码,代码不多,注释比较多而已. import sys, traceback traceback_template = '''Traceback (most recent call last): File "%(filename)s", line %(lineno)s, in %(name)s %(ty

Struts2 控制台不打印异常的解决方案

Struts2 控制台不打印异常解决方法 <interceptor-ref name="defaultStack"> <param name="exception.logEnabled">true</param> <param name="exception.logLevel">error</param> </interceptor-ref>  log4j.propertie

python中使用traceback处理异常信息

近来编写一个程序,该程序可以在设定时间内,获取指定文件夹更新的文件夹和文件列表,并根据获取到的更新列表,做一些操作.由于所写程序是放在服务器上运行,为了保证程序在运行的过程中,不时不时跳出些异常信息出来吓其他用户,就在程序中添加了异常处理.将网上的资料整理下,试着将sys.exce_info()和traceback搭配一起使用.效果还算不错,以下信息是我当前处理异常的方式,其中type是异常的类型,value是出现异常的原因,traceback则是通过traceback追中到的异常信息,能够定位

Tomcat里打印的异常信息,为什么在程序里捕捉不到?

问题描述 前段时间出现了个问题,有点郁闷.为什么别人在访问WebServices的时候会出现这样的情况?如果是访问者那边报异常的时候,Tomcat里就会抛异常. 解决方案 解决方案二:他只是把异常输出了下并没有抛出解决方案三:引用1楼bearkin的回复: 他只是把异常输出了下并没有抛出 哦,那在程序里的日志里无法打印又是怎么回事啊?解决方案四:引用2楼k010010001的回复: 引用1楼bearkin的回复:他只是把异常输出了下并没有抛出哦,那在程序里的日志里无法打印又是怎么回事啊? ...

第九章 Python自定义模块及导入方法

9.1 自定义模块 自定义模块你已经会了,平常写的代码放到一个文件里面就是啦! 例如,写个简单的函数,作为一个模块: #!/usr/bin/python # -*- coding: utf-8 -*- def func(a, b):    return a * b class MyClass:    def __init__(self, a, b):         self.a = a         self.b = b    def method(self):         return

【Python】模块之subprocess

一 简介    在使用Python 开发MySQL自动化相关的运维工具的时候,遇到一些有意思的问题,本文介绍Python的 subprocess 模块以及如何和MySQL交互具体操作,如启动 ,关闭 ,备份数据库.二 基础知识 Python2.4引入subprocess模块来管理子进程,可以像Linux 系统中执行shell命令那样fork一个子进程执行外部的命令,并且可以连接子进程的output/input/error管道,获取命令执行的输出,错误信息,和执行成功与否的结果. Subproce

Perl中捕获警告信息、异常信息并写入日志详解

  这篇文章主要介绍了Perl中捕获警告信息.异常信息并写入日志详解,本文分别给出了捕获警告--不处理.捕获警告--并转换成异常.捕获警告--并写入日志.捕获并写日志的完整例子等实用实例,需要的朋友可以参考下 虽然建议在每个Perl脚本和模块中开启警告,可是你又不想用户看到Perl发出的警告. 一方面你想在代码前面使用use warnings作为你的安全网,另一方面,通常警告会出现在屏幕上.多数情况下,客户不知道如何处理这些警告.如果幸运的话这些警告仅仅让客户惊讶一下,当然,不幸的是他们尝试着去

Python logging模块详解

来源:http://blog.csdn.net/zyz511919766/article/details/25136485 来源:http://blog.csdn.net/yatere/article/details/6655445 来源:http://www.jb51.net/article/88449.htm 简单将日志打印到屏幕: import logging logging.debug('debug message') logging.info('info message') loggi

Python日志模块logging简介_python

logging分为4个模块: loggers, handlers, filters, and formatters. ●loggers: 提供应用程序调用的接口 ●handlers: 把日志发送到指定的位置 ●filters: 过滤日志信息 ●formatters: 格式化输出日志 Logger Logger.setLevel() 设置日志级别 Logger.addHandler()和Logger.removeHandler() 增加和删除日志处理器 Logger.addFilter()和Log