【发布时间】:2021-12-01 19:18:22
【问题描述】:
我正在尝试使用如下所示的日志格式:
{
"DateTime" : "2021-12-01T20:49:55.798+02:00",
"Level" : "INFO",
"Body" : {
"text" : "the log message ",
"SensorID" : "46"
}
}
我使用了 python-json-logger,我的 json 看起来像这样:
{
"DateTime": "2021-12-01T19:08:03.599693Z",
"Level": "INFO",
"message": "the log message",
"body": "{
sensorId :1"
}
}
我仍然不知道如何将消息放在正文中并将关键消息更改为文本...
到目前为止,我的代码如下所示
from pythonjsonlogger import jsonlogger
from json_logging import datetime
logger = logging.getLogger()
logHandler = logging.StreamHandler()
class CustomJsonFormatter(jsonlogger.JsonFormatter):
def add_fields(self, log_record, record, message_dict):
super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict)
if not log_record.get('DateTime'):
# this doesn't use record.created, so it is slightly off
now = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
log_record['DateTime'] = now
if log_record.get('Level'):
log_record['Level'] = log_record['level'].upper()
else:
log_record['Level'] = record.levelname
formatter = CustomJsonFormatter('%(DateTime)s %(Level)s %(message)s')
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)
logger.setLevel(logging.INFO)
y = "{sensorId :" + str(1)
logger.info("the log message" , extra={"body" : y} )
【问题讨论】:
-
第二个 JSON 无效,它有一个不匹配的
}。 -
哦,我刚刚注意到......你有什么建议如何匹配python代码中的jsons吗?
-
你忘记在
y = "{sensorId :" + str(1) + "}"中关闭}