Chcę skonfigurować mój logger Pythona w taki sposób, aby każda instancja rejestratora logowała się do pliku o takiej samej nazwie jak nazwa samego rejestratora.Python logger dynamiczna nazwa pliku
np .:
log_hm = logging.getLogger('healthmonitor')
log_hm.info("Testing Log") # Should log to /some/path/healthmonitor.log
log_sc = logging.getLogger('scripts')
log_sc.debug("Testing Scripts") # Should log to /some/path/scripts.log
log_cr = logging.getLogger('cron')
log_cr.info("Testing cron") # Should log to /some/path/cron.log
chcę zachować ogólny i nie chcesz hardcode wszelkiego rodzaju nazw rejestratora mogę mieć. Czy to jest możliwe?
Czy możliwe jest dodanie handler'a przed wywołaniem "getLogger", więc nie muszę go dodawać za każdym razem, gdy dzwonię do getLoggera? – sharjeel
@sharjeel: Ustaw program obsługi podczas inicjowania i wszystkie przyszłe wywołania funkcji 'getLogger()' nie muszą dodawać procedury obsługi. Rozwiązanie jest podobne do rozwiązania ~ unutbu. W tym przykładzie 'mójLogger' powinien być wywołany tylko raz dla pliku, w przeciwnym razie wystąpią dziwne efekty uboczne. –
Podoba mi się to podejście. Możesz również zachować ścieżkę otwartych plików i nowej instancji, sprawdzić, czy plik jest już otwarty, a następnie nie otwierać ponownie. Jednak taka nauka nie jest wymagana w moim przypadku :-) – sharjeel