Chcę użyć obsługi logowania StreamHandler z Pythona. To, czego próbowałem, to:Python: logging.streamhandler nie wysyła logów do stdout
import logging
import sys
mylogger = logging.getLogger("mylogger")
h1 = logging.StreamHandler(stream=sys.stdout)
h1.setLevel(logging.DEBUG)
mylogger.addHandler(h1)
# now trying to log with the created logger
mylogger.debug("abcd") # <no output>
mylogger.info("abcd") # <no output>
mylogger.warn("abcd") # abcd
Czy brakuje czegoś? Czy robisz coś złego? Dlaczego dzienniki poziomów INFO i DEBUG nie są wysyłane na STDOUT?
byłem po kilka podstawowych dokumentów http: //docs.python. org/2/howto/logging.html # logging-advanced-tutorial Doc mówi setLevel na handler. Czy ten dokument jest niewłaściwy? –
Nie, nie jest źle, jak widać w http://docs.python.org/2/howto/logging.html#logging-flow logger przekazuje wywołanie rejestrowania do jego obsługi po sprawdzeniu poziomu. Więc jeśli poziom rejestratora jest ustawiony na 'WARN' i nadchodzi komunikat' DEBUG', nic się nie przedostanie. Jeśli wiadomość zostanie przesłana, program rejestrujący przekazuje ją do programu obsługi, który również ma typ rejestrowania "filtr". – tamasgal
Dlaczego muszę ustawić poziom rejestratora, jeśli ustawiłem poziom obsługi? dlaczego ustawienie dwa razy? to wydaje się zbędne. – ospider