ロガーには次のdictConfigを使用しています。ただし、実行時にログレベルを変更することはできません。 log_config.jsonのPythonロギングのオーバーライドdictConfigレベル
#contents
{
"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"]
}
}
私は、ロガーを取得し、使用してレベルを設定します。ロガーはdictConfigを使用して作成されたため
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)
しかし、私はないですレベルを上書きすることができます。私は、オープン・コードやjsonファイルを調整しなくても、実行時にロギング・レベルを調整するためのオプション・メニューを持つUIツールを構築したいと考えています。私はレベルを高く調整することができますが、何らかの理由でレベルを下げることはできません...
私がしたいのは、info_fileとconsoleハンドラをconfigのINFO(20)実行時にDEBUG(10)に変更するオプションがあります。何か案は?