[英]Show call location of a wrapped function - loguru
我想記錄我的應用程序發送的所有請求(requests.get、requests.post、...)。 為了沒有樣板,我決定將函數包裝在requests
模塊中:
import functools
from loguru import logger
import requests
def logging_wrap(foo):
@functools.wraps(foo)
def _(*args, **kwargs):
logger.debug(f"Calling {foo.__name__} with args {args} and kwargs {kwargs}")
return foo(*args, **kwargs)
return _
requests.get = logging_wrap(requests.get)
requests.get("https://google.com")
問題是日志指的是包裝器( logger.debug
)中的位置,而不是調用requests.get
的位置。 如何讓 loguru 顯示正確的呼叫位置?
您可以使用opt()
方法,該方法專門用於處理包裝函數的情況,這要歸功於depth
參數:
logger.opt(depth=1).debug(f"Calling {foo.__name__} with args {args} and kwargs {kwargs}")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.