我捕获所有异常并使用loguru logger记录它们。然后我必须重新引发相同的异常以使步骤失败并将信息发送到弹性。
from loguru import logger
@when('some step ...')
def do_something(context, ...):
try:
...
except Exception as e:
save_traceback_to_log_file()
logger.error("Example exception log.")
raise e
------------------------
Console output:
...
... Example exception log.
字符串
我只想看loguru的日志,不想在控制台输出中看到任何来自未处理异常的回溯或异常消息。
我可以用以下命令来屏蔽追踪:
@contextmanager
def disable_traceback():
default_value = getattr(sys, "tracebacklimit", 1000)
sys.tracebacklimit = 0
yield
sys.tracebacklimit = default_value
...
with disable_traceback():
raise e
的数据
但是我仍然在控制台输出中得到不想要的异常消息:
raise Exception(“Some message...”)
04.12.1999 15:36:47.153 | ERROR | ... - Exception - Some message...
When executing the system test "..." ... failed in 0.503s
Exception: Some message... << don't want
型
这些方法似乎都不起作用:sys.excepthook、用open(os.devnull,'w')静默Python的stderr、捕获装饰器
我该怎么做?
1条答案
按热度按时间gzszwxb41#
不知道为什么
sys.excepthook
不适合你,但它正是你正在寻找的,恕我直言。请参阅下面的简单示例。注意:
sys.excepthook
不支持IPython,参见this问题。字符串
输出:
型