我正在尝试使用YAML配置文件在脚本中设置记录器。
目标之一是将所有“错误”级别的消息仅记录到errors.log并将所有“信息”级别的消息仅记录到info.log。
我的配置创建了两个日志文件-进入errors.log的“错误”和进入info.log的“ info”,但是错误消息也记录到info.log。
因此,信息日志将如下所示:
2019-08-30 10:31:09,667 | INFO | Function: main() | Line 26 | TEST-MESSAGE-1
2019-08-30 10:31:09,667 | ERROR | Function: main() | Line 27 | TEST-MESSAGE-2
是否可以将错误消息排除在info.logs之外?
如果是这样,我在日志记录配置中出了什么问题?
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: simple
stream: ext://sys.stdout
info_file_handler:
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: simple
filename: ./_logs/info.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
error_file_handler:
class: logging.handlers.RotatingFileHandler
level: ERROR
formatter: simple
filename: ./_logs/errors.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
loggers:
main:
level: ERROR
handlers: [console]
propagate: no
root:
level: INFO
handlers: [console, info_file_handler, error_file_handler]
propogate: no
#! /usr/bin/env python3
import logging
import logging.config
import yaml
logger = logging.getLogger(__name__)
def set_logger():
path = 'logging.yaml'
with open(path, 'rt') as f:
config = yaml.safe_load(f.read())
logger = logging.config.dictConfig(config)
return logger
def main():
test_msg1 = f"TEST-MESSAGE-1"
test_msg2 = f"TEST-MESSAGE-2"
logger.info(test_msg1)
logger.error(test_msg2)
if __name__ == '__main__':
set_logger()
main()