繁体   English   中英

子包的Python日志记录JSON配置

[英]Python logging JSON config for sub packages

我有一组Python脚本,其顺序如下:

包装1

  • py
  • py

包装2

  • log.py

其中log.py使用以下命令为所有日志创建中央设置:

logging_config_json_file = open(os.path.dirname(os.path.realpath(__file__)) + "/../logging.json")
parsed_logging_data = json.load(logging_config_json_file)
logging.config.dictConfig(parsed_logging_data)


def get_logger(logger_name):
    return logging.getLogger(logger_name)

如果我通过package2.log.get_logger(__ name__)调用获取记录器,则可以正常工作。

但是,我只是无法在logging.json文件中正确配置子软件包package1.X和Y。

这是JSON文件的简单版本:

{
    "version": 1,
    "disable_existing_loggers": 0,
    "formatters": {
        "simple": {
            "format": "%(levelname)s - %(message)s"
        }
    },

    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "DEBUG",
            "formatter": "simple",
            "stream": "ext://sys.stdout"
        }
    },

    "loggers": {
        "package1.X": {
            "level": "INFO",
            "handlers": ["console"],
            "propagate": 0
        }
    },

    "root": {
        "level": "WARN",
        "handlers": ["console"]
    }
}

为什么这里的package1.X中的所有内容都不以INFO级别记录(仅发出警告)?

我不太了解(有点像新手),但看起来该级别是从root -> logger -> handlerroot -> logger -> handler (我还没有root -> logger -> handler )级联的。

因此,如果将root设置为INFO,则应获得:

  • package1.X信息
  • 调试其他所有内容

就像我说的,还没有解释(也许以后,当我花更多时间在python中记录框架时)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM