记录前如何处理对象?
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 例如。
而不是这个:
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 例如。