如何通过logging模块而不是通过模块输出未捕获的异常stderr?
我意识到这样做的最好方法是:
try:
raise Exception, 'Throwing a boring exception'
except Exception, e:
logging.exception(e)
Run Code Online (Sandbox Code Playgroud)
但是我的情况是如果在没有捕获到异常的情况下自动调用它会非常好logging.exception(...).
我在Python中创建的日志旨在临时存储为文件,然后将这些文件处理到日志数据库中.它们采用管道描述的格式来指示如何处理日志,但logging.exception()通过添加太多字段和太多新行来破坏我的标准.
import logging
logging.basicConfig(filename='output.txt',
format='%(asctime)s|%(levelname)s|%(message)s|',
datefmt='%m/%d/%Y %I:%M:%S %p',
level=logging.DEBUG)
logging.info('Sample message')
try:
x = 1 / 0
except ZeroDivisionError as e:
logging.exception('ZeroDivisionError: {0}'.format(e))
# output.txt
01/27/2015 02:09:01 PM|INFO|Sample message|
01/27/2015 02:09:01 PM|ERROR|ZeroDivisionError: integer division or modulo by zero|
Traceback (most recent call last):
File "C:\Users\matr06586\Desktop\ETLstage\Python\blahblah.py", line 90, in <module>
x = 1 / 0
ZeroDivisionError: integer division or modulo by zero
Run Code Online (Sandbox Code Playgroud)
如何使用空格和换行符最好地处理或格式化回溯?这些消息是logging.exception()中的一部分,但是当我尝试记录异常实例时,绕过函数感觉很奇怪.如何记录我的回溯并将其格式化?是否应该忽略追溯?
感谢您的时间!