I am trying to do a log format that looks like this:
{
"DateTime" : "2021-12-01T20:49:55.798+02:00",
"Level" : "INFO",
"Body" : {
"text" : "the log message ",
"SensorID" : "46"
}
}
I used python-json-logger and my json looks like this :
{
"DateTime": "2021-12-01T19:08:03.599693Z",
"Level": "INFO",
"message": "the log message",
"body": "{
sensorId :1"
}
}
and I still do not know how do I put the message inside the body and change the key message into text...
My code so far looks like this
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} )
}.}iny = "{sensorId :" + str(1) + "}"