记录前如何处理对象?

How to handle the object before logging?

而不是这个:

def log_error(obj):
  msg = do_someprocess(obj)
  logging.error(msg)

我想添加 do_someprocess 作为日志记录的挂钩。当我调用 logging.error(obj) 时,它会在记录之前执行 do_someprocess


背景:对象是一个错误object,它包含错误id和消息,使用logging.error(error_obj)记录错误。 do_someprocess 用于格式化对象的错误信息。


@mrEvgenX 的评论让我觉得我不必将其作为 logging 的一部分。所以我要在我的错误 class 中添加 def __str__(self)

@Sam 的回答也是另一种解决方案,处理程序是 StreamHandler

您将需要创建自己的处理程序(创建继承自 python 的处理程序之一的新 class)并将其添加到您的记录器(这可以完成一次在使用 AddHandler 初始化时)。

请看 Python's cookbook 例如。