我正在使用以下dictConfig作为日志记录器。然而,我无法在运行时修改日志记录级别。
# log_config.json的内容
但是,由于日志记录器是使用dictConfig创建的,我无法覆盖级别。我想建立一个UI工具,在运行时有一个选项菜单可以调整日志记录级别,而不必打开代码或json文件进行调整。我能够将级别调高,但是由于某种原因它不允许级别降低... 我想做的是将info_file和console处理程序设置为config中的INFO(20),然后在运行时有选择地将它们更改为DEBUG(10)。有什么想法吗?
# log_config.json的内容
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"simple": {
"format": "%(asctime)s - %(name)-12s - %(levelname)-8s - %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S"
},
"detailed": {
"format": "%(asctime)s %(name)-12s %(module)-17s line:%(lineno)-4d %(levelname)-8s %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "INFO",
"formatter": "simple",
"stream": "ext://sys.stdout"
},
"info_file_handler": {
"class": "logging.handlers.TimedRotatingFileHandler",
"level": "INFO",
"formatter": "detailed",
"filename": "info.log",
"when": "midnight",
"backupCount": 7,
"encoding": "utf8"
},
"error_file_handler": {
"class": "logging.handlers.TimedRotatingFileHandler",
"level": "ERROR",
"formatter": "detailed",
"filename": "errors.log",
"when": "midnight",
"backupCount": 7,
"encoding": "utf8"
}
},
"loggers": {
"": {
"level": "ERROR",
"handlers": ["console"],
"propagate": "no"
}
},
"root": {
"level": "NOTSET",
"handlers": ["console", "info_file_handler", "error_file_handler"]
}
}
然后我获取日志记录器并使用以下代码设置级别:
with open('/path/to/log_config.json', 'r') as fd:
cfg = json.load(fd)
logging.config.dictConfig(cfg)
logger = logging.getLogger(__name__)
logger.setLevel(10)
但是,由于日志记录器是使用dictConfig创建的,我无法覆盖级别。我想建立一个UI工具,在运行时有一个选项菜单可以调整日志记录级别,而不必打开代码或json文件进行调整。我能够将级别调高,但是由于某种原因它不允许级别降低... 我想做的是将info_file和console处理程序设置为config中的INFO(20),然后在运行时有选择地将它们更改为DEBUG(10)。有什么想法吗?