我正在尝试使用logging.config.dictConfig()配置我的Python日志模块
但是,我的JSON文件似乎已经损坏,尽管它的工作方式是Python并将false更改为False,所以我不认为这是语法错误。
我的守则说:
import json
with open('logging_config.json') as f:
d = json.load(f)我的logging_config.json文件是:
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"standard": {
"format": "[%(levelname)s] %(name)s: %(message)s"
},
},
"handlers": {
"default": {
"level": "DEBUG",
"formatter": "standard",
"class": "logging.StreamHandler",
},
},
"loggers": {
"": {
"handlers": ["default"],
"level": "INFO",
"propagate": true
},
"myfunc": {
"handlers": ["default"],
"level": "DEBUG",
"propagate": false
},
}
}当我运行那个简单的程序时,我会得到一个错误:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 8 column 3 (char 156)
是什么导致JSON解码器失败?
提前感谢您的帮助。
发布于 2017-08-22 16:07:32
您有多个外部逗号,这将破坏JSON反序列化。
这里是您的原始JSON,每个外来逗号都指出:
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"standard": {
"format": "[%(levelname)s] %(name)s: %(message)s"
}, # <--- extraneous comma
},
"handlers": {
"default": {
"level": "DEBUG",
"formatter": "standard",
"class": "logging.StreamHandler", # <--- extraneous comma
}, # <--- extraneous comma
},
"loggers": {
"": {
"handlers": ["default"],
"level": "INFO",
"propagate": true
},
"myfunc": {
"handlers": ["default"],
"level": "DEBUG",
"propagate": false
}, # <--- extraneous comma
}
}除去这些,这现在是一个有效的JSON文档:
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"standard": {
"format": "[%(levelname)s] %(name)s: %(message)s"
}
},
"handlers": {
"default": {
"level": "DEBUG",
"formatter": "standard",
"class": "logging.StreamHandler"
}
},
"loggers": {
"": {
"handlers": ["default"],
"level": "INFO",
"propagate": true
},
"myfunc": {
"handlers": ["default"],
"level": "DEBUG",
"propagate": false
}
}
}发布于 2017-08-22 16:21:46
正如其他人已经回答的那样,JSON中有一些多余的逗号。
您可以将JSON提供给https://jsonlint.com/;它会提供更多有用的帮助消息。
发布于 2017-08-22 16:07:53
这是因为您的JSON无效。这个JSON是有效的。我从您的JSON中删除了额外的逗号。您可以使用任何JSON验证器来修复它。
{
"version": 1,
"disable_existing_loggers": false,
"formatters":
{
"standard":
{
"format": "[%(levelname)s] %(name)s: %(message)s"
}
},
"handlers":
{
"default":
{
"level": "DEBUG",
"formatter": "standard",
"class": "logging.StreamHandler"
}
},
"loggers":
{
"":
{
"handlers": ["default"],
"level": "INFO",
"propagate": true
},
"myfunc":
{
"handlers": ["default"],
"level": "DEBUG",
"propagate": false
}
}
}https://stackoverflow.com/questions/45822264
复制相似问题