Tôi muốn sử dụng trình xử lý đăng nhập StreamHandler của python. Những gì tôi đã thử là,Python: logging.streamhandler không gửi nhật ký tới 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
Tôi đang thiếu cái gì? Hay làm gì sai? Tại sao nhật ký mức INFO và DEBUG không xuất hiện trên STDOUT?
Tôi đang theo dõi một số tài liệu cơ bản, http: //docs.python. org/2/howto/logging.html # logging-advanced-tutorial Tài liệu nói setLevel về trình xử lý. Tài liệu này có sai không? –
Không có gì sai, như bạn có thể thấy trong http://docs.python.org/2/howto/logging.html#logging-flow trình ghi nhật ký chuyển cuộc gọi ghi nhật ký tới trình xử lý của nó sau khi kiểm tra mức. Vì vậy, nếu mức của logger được đặt thành 'WARN', và một thông báo' DEBUG' sẽ đến, không có gì được thông qua. Nếu một thông báo trôi qua, trình ghi nhật ký đưa nó cho trình xử lý, cũng có một kiểu ghi "bộ lọc". – tamasgal
Tại sao tôi phải đặt mức của trình ghi nhật ký nếu tôi đã đặt cấp của trình xử lý? tại sao thiết lập nó hai lần? điều đó dường như thừa. – ospider