Spring Boot 使用 actuator/logfile 乱码问题

0. 开发环境

  • Windows Server 2012 R2
  • Intellij Idea 2020.1
  • jdk 8
  • Spring Boot 2.3.1

1. 问题描述

近日开发了一个小的项目维护工具,为了可以在管理页面上直接查看应用运行日志,借助了 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-Typeapplication/json; charset=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 默认返回编码一致,乱码问题至此已解决。

你可能感兴趣的:(Spring Boot 使用 actuator/logfile 乱码问题)