我有多個Python模塊,每個模塊都有單獨的日誌配置文件。我使用的YAML,所以我只是做了多個實例和多個目標
log_config_dict=yaml.load(open(config_file1, 'r'))
logging.config.dictConfig(log_config_dict)
self.main_logger=logging.getLogger('Main_Logger')
在另一個模塊,我有一些像
log_config_dict=yaml.load(open(config_file2, 'r'))
logging.config.dictConfig(log_config_dict)
self.main_logger=logging.getLogger('Poller_Main_Logger')
的2個伐木者正在寫分離的日誌文件。然後,在每個單獨的模塊的代碼,我作爲記錄 -
self.main_logger.info(log_str)
但是預期這是行不通的。假設我從module1,然後從module2,然後再從module1進行記錄,日誌消息要麼寫入到module2的目的地,要麼根本不寫入。
任何想法發生了什麼?每次我執行dictConfig調用時,以前的記錄器是否被禁用?有沒有辦法解決?
下面 - 日誌配置文件
version: 1
formatters:
default_formatter:
format: '%(asctime)s : %(levelname)s : %(message)s'
datefmt: '%d-%b-%Y %H:%M:%S'
plain_formatter:
format: '%(message)s'
handlers:
console_default_handler:
class: logging.StreamHandler
level: INFO
formatter: default_formatter
stream: ext://sys.stdout
console_error_handler:
class: logging.StreamHandler
level: WARNING
formatter: default_formatter
stream: ext://sys.stderr
logfile_handler:
class: logging.FileHandler
filename: logger.txt
mode: a
formatter: default_formatter
level: DEBUG
errfile_handler:
class: logging.FileHandler
filename: error.txt
mode: a
formatter: default_formatter
level: WARNING
plain_handler:
class: logging.StreamHandler
level: DEBUG
formatter: plain_formatter
stream: ext://sys.stdout
loggers:
Poller_Main_Logger:
level: DEBUG
handlers: [console_default_handler,logfile_handler]
propagate: no
Plain_Logger:
level: DEBUG
handlers: [plain_handler]
propagate: no
Error_Logger:
level: WARNING
handlers: [errfile_handler,console_error_handler,logfile_handler]
propagate: no
root:
level: INFO
handlers: [console_default_handler]
你的yamls有什麼?我敢打賭,加載的字典都默認修改根記錄器,因爲他們沒有另外指定。 –
這是其中之一:見上面 – Nupur