手动记录 python 函数并返回所有日志消息的列表

Manually logging inside python functions and returning a list of all log messages

我正在尝试在函数内部进行一些详细的日志记录,并将每条日志消息添加到列表对象中。我正在使用 class 创建记录器对象。

from log_class import MyLog

def function1(...):

  my_logger = MyLog("Function1")

  try:
    result = ..do something
    my_logger.info("something was done ok")
  except:
    my_logger.error("something went wrong")

  log_contents = my_logger.log_capture_string.getvalue()
  log_list.append(log_contents)

  return result1, log_list

def function2:(...)
  ...similar pattern

  return result2, log_list

#getting log content from both functions
for log_item in log_list:
  print(log_item)

如果没有错误,我可以毫无问题地获取日志列表,但如果有错误并调用了异常,我将不会得到我的 log_list 和我的自定义错误消息,因为什么都不会 return.

你能想出解决这个问题的方法吗?或者建议使用类似的方法来获取 log_list 对象,并在函数中写入错误消息。这个想法是我想在其他函数中再次添加到 log_list 对象。

如果你想让这两行无论是否发生错误都执行,只需创建一个 finally 子句。

finally:
  log_contents = my_logger.log_capture_string.getvalue()
  log_list.append(log_contents)

https://docs.python.org/3/reference/compound_stmts.html#the-try-statement