Chciałbym zaimplementować opcjonalny program rejestrujący w funkcji. Coś takiego:Implementowanie opcjonalnego programu rejestrującego w kodzie
def foo(arg1, arg2, arg3, logger=None):
logger = logger or (lambda *x: None)
...
self.logger.debug("The connection is lost.")
Chcę, aby rejestracja się wydarzyła w przypadku, gdy istnieje rejestrator. W przeciwnym razie debugowanie rejestratora nic nie da.
Zasadniczo prostym sposobem na osiągnięcie tego jest zagnieżdżenie każdej instrukcji debugowania w bloku if logger
, ale wydaje się nieporządne, gdy istnieje wiele instrukcji debugowania.
Nie jestem pewien, jak to by działało w twojej sytuacji, ale czy mógłbyś poprowadzić funkcję sprawdzając, czy logger istnieje, a jeśli nie, stwórz rejestrator o tej samej nazwie ("logger", wydaje się) i kieruj wyjście do 'os.devnul'? – RocketDonkey
@iTayb Cześć, masz dość prosty opis tego, co chcesz (żeby mieć fikcyjnego dziennikarza). ale logowanie Pythona zwykle nie jest używane w ten sposób, o ile wiem. Ponieważ możesz uzyskać filtrowanie rejestrowania, użyj nazwy rejestratora, czy mogę zapytać, dlaczego (w jakiej sytuacji) nadal potrzebujesz tego rodzaju obejścia? – tdihp
@tdihp Chcę opracować kawałek kodu, który może rejestrować jego aktywność do dostarczonego rejestratora. Ten kod musi być przenośny. To (mam nadzieję) zostanie wdrożone w wielu różnych projektach i nie zapewniam środowiska logowania. Od dewelopera zależy, czy chce zarejestrować aktywność tej funkcji, czy nie. Po prostu daję mu opcję. – iTayb