如何修改python json logger输出JSON日志的默认字段键名
修改python-json-logger输出键名的实现方案
直接在初始化JsonFormatter时传入内置的rename_fields参数即可完成键名替换,不需要自定义格式化类,操作成本最低。
rename_fields接收字典类型参数,格式为{"原字段名": "目标新键名"},针对你的需求,只要把要修改的asctime、levelname两个字段的映射加进去就行。
修改后完整代码
import logging from pythonjsonlogger import jsonlogger def main() -> None: logger = logging.getLogger("myLovelyLogger") logger.warning("something terrible happened") if __name__ == "__main__": logger = logging.getLogger("myLovelyLogger") handler = logging.StreamHandler() handler.setLevel(logging.INFO) formatter = jsonlogger.JsonFormatter( fmt="%(asctime)s %(name)s %(levelname)s %(message)s", datefmt="%d/%m/%y[ %H:%M:%S ]", json_indent=4, # 新增字段重命名配置 rename_fields={ "asctime": "time", "levelname": "level" } ) handler.setFormatter(formatter) logger.addHandler(handler) main()
运行输出效果
运行上述代码后,输出的JSON日志完全符合需求:
{ "time": "29/06/22[ 13:44:55 ]", "name": "myLovelyLogger", "level": "WARNING", "message": "something terrible happened" }
注:
rename_fields是python-json-logger 0.2.0及以上版本原生支持的配置项,后续如果需要修改其他输出键名,直接在该字典中追加对应映射关系即可。
内容的提问来源于stack exchange,提问作者OrenIshShalom
相关产品推荐
相关产品推荐

