将堆栈跟踪打印到文件的异常

时间:2015-07-26 12:20:35

标签: python exception try-catch try-except

我正在尝试将简单的日志放入我的脚本中。此日志应告诉我错误的位置以及修复脚本所需的尽可能多的信息。

我已将print str(e)添加到每个文件中,但它提供的信息很少,可以知道出了什么问题。

我怎么能详细说明?例如,我可以在控制台中看到整个未捕获的异常文本?

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

1 个答案:

答案 0 :(得分:16)

试试这个,

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())

如果您想要更好的解决方案,请使用Logger来管理syou的时间戳,文件大小和轮换(执行记录器处理程序)

这是记录器,时间戳和旋转的示例

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())