所以我可以像这样将额外的字段添加到我的日志消息中
在上面的代码中,我可以看到所有额外字段在输出字典中,但是它们被压缩成一个带有许多其他不需要的垃圾信息的字典。
logging.info("My log Message", extra={"someContext":1, "someOtherContext":2})
很好,但不清楚如何在我的日志格式化器中提取所有额外字段。
def format(self, record):
record_dict = record.__dict__.copy()
print(record_dict)
在上面的代码中,我可以看到所有额外字段在输出字典中,但是它们被压缩成一个带有许多其他不需要的垃圾信息的字典。
{'name': 'root', 'msg': 'My log Message', 'args': (), 'levelname': 'INFO', 'levelno': 20, 'pathname': '.\\handler.py', 'filename': 'handler.py', 'module': 'handler', 'exc_info': None, 'exc_text': None, 'stack_info': None, 'lineno': 27, 'funcName': 'getPlan', 'created': 1575461352.0664868, 'msecs': 66.48683547973633, 'relativeCreated': 1253.0038356781006, 'thread': 15096, 'threadName': 'MainThread', 'processName': 'MainProcess', 'process': 23740, 'someContext': 1, 'someOtherContext':2}
有没有一种方法可以获取我所有的额外键,而无需提前知道它们?
我正在编写一个JSON格式化程序,想要创建一个类似于字典的东西。
justMyExtra = ?????
to_log = {
"message" record_dict["message"],
**justMyExtra
}
makeRecord
不是一种通用或理想的解决方案。此时程序员没有使用内置记录器,这可能会损害中间件互操作性。 - John Vandivier