关于python:打印堆栈跟踪到文件的异常

Print exception with stack trace to file

我想在我的脚本中添加一个简单的日志。这个日志应该告诉我错误在哪里,以及修复脚本所需的尽可能多的信息。

我把打印到文件str(e)放在每个文件中,只不过它提供了很少的信息来知道出了什么问题。

我怎样才能把它详细化呢?例如,我可以在控制台中看到整个未捕获的异常文本?

1
2
3
4
try:
    #code
except Exception as e:
   print_to_file(log.txt,str(e))


试试这个,

1
2
3
4
5
6
7
import traceback
try:
    1/0
except Exception as e:
    with open('log.txt', 'a') as f:
        f.write(str(e))
        f.write(traceback.format_exc())

如果您想要一个更好的解决方案,那么应该使用为Syou管理时间戳、文件大小和旋转的记录器(执行记录器处理程序)。

这是一个带有记录器、时间戳和旋转的示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import logging
from logging.handlers import RotatingFileHandler
import traceback

logger = logging.getLogger("Rotating Log")
logger.setLevel(logging.ERROR)
handler = RotatingFileHandler("log.txt", maxBytes=10000, backupCount=5)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
try:
    1/0
except Exception as e:
    logger.error(str(e))
    logger.error(traceback.format_exc())