簡體   English   中英

顯示包裝的 function 的呼叫位置 - loguru

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM