我想在一個函數中實現一個可選的記錄器。例如:在代碼中實現一個可選的記錄器
def foo(arg1, arg2, arg3, logger=None):
logger = logger or (lambda *x: None)
...
self.logger.debug("The connection is lost.")
我希望在記錄器存在的情況下進行記錄。否則,記錄器的調試將不會執行任何操作。
基本上簡單的方法去實現它是窩在一個if logger
塊每一個調試語句,但是當有許多調試語句看起來凌亂。
不知道如何在你的情況下工作,但是如果記錄器存在,你可以通過檢查來引導該函數嗎?如果不存在,創建一個相同名稱的記錄器('logger',看起來)並且路由輸出到'os.devnul'? – RocketDonkey
@iTayb嗨,你有一個相當簡單的描述你想要什麼(有一個虛擬記錄器)。但據我所知,python的日誌通常不會以這種方式使用。由於您可以使用記錄器的名稱實現日誌過濾,請問爲什麼(在什麼情況下)您仍然需要這種解決方法? – tdihp
@tdihp我想開發一個代碼片斷,可以將它的活動記錄到提供的記錄器中。此代碼必須是便攜式的。它(希望)將在許多不同的項目中實現,並且我不提供日誌記錄環境。開發者決定是否要記錄函數的活動。我只是給他選擇。 – iTayb