相关疑难解决方法(0)

在Python中记录未捕获的异常

如何通过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-handling

157
推荐指数
8
解决办法
4万
查看次数

如何在Python日志记录中格式化异常堆栈跟踪?

我在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()中的一部分,但是当我尝试记录异常实例时,绕过函数感觉很奇怪.如何记录我的回溯并将其格式化?是否应该忽略追溯?

感谢您的时间!

python logging traceback

10
推荐指数
2
解决办法
5461
查看次数

可以使用Pythons标准库完成结构化日志记录吗?

我最近阅读了有关结构化日志的信息(此处)。这个想法似乎不是通过将简单的字符串作为一行添加到日志文件中来进行记录,而是通过JSON对象进行记录。这样就可以通过自动工具分析日志文件。

Pythons logging库可以进行结构化日志记录吗?如果不是,是否有“主流”解决方案(例如numpy / scipy是科学计算的主流解决方案)?我找到了structlog,但是我不确定它的普及程度。

python logging structured-logging

4
推荐指数
3
解决办法
1356
查看次数