python log写入中文乱码,直接修改handle的encode参数为utf-8
即在源码中修改encoding='utf-8',因为 logging.basicConfig() 配置时实际上是用到了4大组件,只不过给了默认值,在loging.FileHandler()方法中默认是这样的。
只需在源码中修改。
推荐课程:零基础入门学习Python(小甲鱼)
近日开发了一个小的项目维护工具,为了可以在管理页面上直接查看应用运行日志,借助了 Spring Boot 自带的 actuator 中的 logfile 端点,起初在 idea 中开发时,访问 http://localhost:8080/actuator/logfile 时,返回的日志信息中中文都是正常的,在一切开发完毕后,使用 mvn 打包后直接使用 java -jar xxx.jar 模式运行项目,发现在访问 /actuator/logfile 时,其中的中文日志都变成了乱码。经分析,在 idea 中以源码方式运行时,生成的 log 文件编码为 utf-8 ,打包后使用 jar -jar xxx.jar 方式运行时,生成的 log 文件编码为 gbk ,后查看 actuator 的源码,发现获取 log 信息端点中 Content-Type 为 application/jsoncharset=utf-8 ,且未提供可配置项进行修改,因生成的日志文件编码与 Content-Type 不一致,导致访问乱码。后经查阅资料和与其他朋友请教,是因为在 Windows server 2012 r2 的 *** 作系统下,默认系统编码为 gbk,为了解决乱码问题,需要调整使用 java -jar 模式启动时的系统编码配置,即添加 -Dfile.encoding=utf-8 ,完整命令为 java -Dfile.encoding=utf-8 -jar xxx.jar ,执行完成后再生成的文件内容编码就变成了 utf-8 ,与 /actuator/logfile 默认返回编码一致,乱码问题至此已解决。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)