Tôi muốn làm điều gì đó mà tôi nghĩ là đơn giản.Các cấp độ đăng nhập khác nhau trong python
Thực tế với mô-đun ghi trăn, tôi quan tâm đến việc ghi nhật ký mọi thứ trên dòng lệnh ở cấp được đưa ra từ các đối số dòng lệnh và đăng nhập vào một mức DEBUG cố định.
Tạo hai trình ghi nhật ký khác nhau với các mức khác nhau không hoạt động, nhưng thiết lập mức của hai trình xử lý khác nhau được thêm vào root logger không hoạt động, vì vậy bất kỳ ý tưởng nào về cách thực sự nên thực hiện? (đọc trên các liên kết khác phương pháp thứ hai nên làm việc, vì vậy tôi đang làm cái gì khác ngu ngốc?)
Đây là mã trong đó thiết lập hệ thống đăng nhập của tôi vào lúc này:
class LoggerSetup(object):
"""Setup the different logger objects
"""
def __init__(self):
self.root_logger = logging.getLogger()
self.shell_hdlr = logging.StreamHandler()
#TODO: add another logging handler which stores to a temporary file
#which should be cleaned up later
def setup_shell_logger(self, log_level):
self.root_logger.setLevel(LOG_LEVELS[log_level])
# in this way the root logger is not set but the handlers are set
self.shell_hdlr = logging.StreamHandler()
self.shell_hdlr.setLevel(LOG_LEVELS[log_level])
self.shell_hdlr.setFormatter(StarFormatter())
#FIXME: add the support for regular expression exclusion too
self.root_logger.addHandler(self.shell_hdlr)
def setup_log_include(self, log_include):
"""Set up the filter to include log messages
"""
if log_include:
incl = FilterInclude(log_include)
self.shell_hdlr.addFilter(incl)
def setup_log_exclude(self, log_exclude):
"""Set up the filters to exclude log messages
"""
if log_exclude:
excl = FilterExclude(log_exclude)
self.shell_hdlr.addFilter(excl)
def setup_file_logging(self):
"""Set up the file logger, which always logs in DEBUG mode
even if the top level logger is set to another level
"""
#XXX: not working, one possible way to make it work is to create
#only one log, and different handler/filters to make to handle all
#the different outputs
file_handler = logging.FileHandler(LOG_FILENAME)
# the file logging is always in debug mode
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s - %(asctime)s')
file_handler.setFormatter(formatter)
self.root_logger.addHandler(file_handler)
"nhưng đặt mức của hai trình xử lý khác nhau được thêm vào bộ ghi gốc không hoạt động "? Bạn có thể làm rõ, xin vui lòng? –