前言
常规我们需要把业务日志转成JSON格式输入到ELK中。经常会碰到中文乱码的问题
解决方案
-
方案a: pythonjsonlogger [自动把日志转化json]
安装方式& 中文乱码解决方法
pip install pythonjsonlogger
import logging
from pythonjsonlogger import jsonlogger
logger = logging.getLogger()
logHandler = logging.StreamHandler()
fmt="%(asctime) %(levelname) %(filename) %(funcName) %(lineno) %(message)"
datefmt="%Y-%m-%dT%H:%M:%SZ%z"
formatter = jsonlogger.JsonFormatter(fmt=fmt, datefmt=datefmt,json_ensure_ascii=False) ### 指定参数json_ensure_ascii=False
logHandler.setFormatter(formatter)
logger.setLevel("INFO")
logger.addHandler(logHandler)
"""
在默认情况下,对于非ascii字符生成的是相对应的字符编码,
而非原始字符,需要设置参数json_ensure_ascii=False
"""
- 方案b: 通过json.dumps() 自己封装
中文乱码解决方法
items = json.dumps(test_dict, ensure_ascii=False) ### ensure_ascii=False