python:在哪里记录异常

python:在哪里记录异常,python,Python,我正在寻找一些“最佳实践”建议 在我的Python应用程序中,我使用异常来控制程序流。但我不确定应该将异常记录在哪里。我的直觉告诉我应该把它记录在最靠近引发异常的地方。但这会导致一些相当笨拙的代码: def a_deep_level_函数(): 打印(“我正在做一些事情,但它出错了。所以提高。”) #但我也想用同样的信息在这里登录。 #所以我把我的msg放在一个单独的变量中重新使用它。 msg=“这是日志记录和异常消息” _LOGGER.error(msg) 引发异常(msg) 任何想法都很感

我正在寻找一些“最佳实践”建议

在我的Python应用程序中,我使用异常来控制程序流。但我不确定应该将异常记录在哪里。我的直觉告诉我应该把它记录在最靠近引发异常的地方。但这会导致一些相当笨拙的代码:

def a_deep_level_函数():
打印(“我正在做一些事情,但它出错了。所以提高。”)
#但我也想用同样的信息在这里登录。
#所以我把我的msg放在一个单独的变量中重新使用它。
msg=“这是日志记录和异常消息”
_LOGGER.error(msg)
引发异常(msg)

任何想法都很感激

在python中,最佳实践是使用日志模块生成日志文件。对于异常处理,始终使用try-except块

尝试以下方法:

import logging
def a_deeper_level_function():
    try:
        print("I am doing stuff, but it goes wrong. So raising.")

        # but I also want to log here with the same message.
        # so I put my msg in a separate variable to re-use it.

        msg = "this is the logging and exception message"
       _LOGGER.error(msg)
       raise Exception(msg) 
   except Exception as e:
       logging.info(e)
       

如果您手动引发异常并知道它将出现在哪里,
try
finalize
可能适合您。这也使得在异常之间导航变得更容易

def a_deeper_level_function():
   try:
      print("I am doing stuff, but it goes wrong. So raising.")
      msg = "this is the logging and exception message"
      raise Exception(msg) 
   finally:
      _LOGGER.error(msg)
日志记录。异常(e)
。看见