spring boot jar部署控制臺(tái)日志亂碼的解決
spring boot jar部署控制臺(tái)日志亂碼
問(wèn)題描述
spring boot jar包部署,通過(guò)java -jar 命令運(yùn)行.jar文件
代碼中通過(guò)變量log輸出到控制臺(tái)的中文,亂碼,但是僅僅是在運(yùn)行jar時(shí)才亂碼;而在用eclipse debug時(shí),正常
代碼中通過(guò)System.out.println()輸出的中文,不論是否是通過(guò)jar運(yùn)行,都正常
日志使用的是默認(rèn)的logback,未使用log4j
解決
1、resources文件夾新建logback.xml(文件名不可修改)
內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- spirng boot 默認(rèn)使用logback,默認(rèn)會(huì)讀取resources文件夾下的名為logback.xml的文件 zhangyu 20180807-->
<configuration debug="false">
<!--定義日志文件的存儲(chǔ)地址 勿在 LogBack 的配置中使用相對(duì)路徑 -->
<property name="LOG_HOME" value="C:/loghome" />
<!-- 控制臺(tái)輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<!-- <charset>UTF-8</charset> -->
</encoder>
</appender>
<!-- 日志輸出級(jí)別 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
2、首先,spring boot 默認(rèn)使用logback
默認(rèn)讀取resources/下名為logback.xml的日志配置文件,有則讀取,沒(méi)有則使用默認(rèn)。
3、其次,logback.xml,將
<charset>UTF-8</charset>
注釋掉或刪除
4、如果,不配置logback.xml
使用默認(rèn)的配置,那么部署jar包,java -jar xxx.jar,代碼中l(wèi)og變量輸出的中文,亂碼;如果,配置了logback.xml,但是charset使用UTF-8,那么中文依然亂碼;只有使用logback.xml,且,charset刪除掉,才能確保中文正常。
5、針對(duì)這個(gè)非常具體的問(wèn)題
我嘗試過(guò),且無(wú)用的做法有,在pom的plugin–>spring-boot-maven-plugin–>configuration節(jié)點(diǎn)下增加-Dfile.encoding=UTF-8,無(wú)用;或者在運(yùn)行.jar包時(shí),增加參數(shù)-Dfile.encoding=UTF-8,依然無(wú)用。
springboot打包后在Windows控制臺(tái)運(yùn)行中文亂碼
springboot打包之后,如果通過(guò)java -jar在Windows控制臺(tái)直接運(yùn)行,則會(huì)出現(xiàn)中文亂碼,保存到數(shù)據(jù)庫(kù)里面的也是亂碼,通過(guò)在idea中直接運(yùn)行不會(huì)出現(xiàn)亂碼。
為了解決在Windows控制臺(tái)運(yùn)行中亂碼,在運(yùn)行腳本加入 -Dfile.encoding=utf-8運(yùn)行參數(shù)
例如
java -jar -Dfile.encoding=utf-8 app-0.0.1-SNAPSHOT.jar
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis一對(duì)多關(guān)聯(lián)關(guān)系映射實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Mybatis一對(duì)多關(guān)聯(lián)關(guān)系映射實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
MyBatis-Plus里面的增刪改查詳解(化繁為簡(jiǎn))
這篇文章主要給大家介紹了關(guān)于MyBatis-Plus里面的增刪改查的相關(guān)資料,Mybatis-Plus是一個(gè)基于Mybatis的增強(qiáng)工具,可以簡(jiǎn)化Mybatis的開(kāi)發(fā),提高開(kāi)發(fā)效率,需要的朋友可以參考下2023-07-07
Springboot處理跨域的實(shí)現(xiàn)方式(附Demo)
這篇文章主要介紹了Springboot處理跨域的實(shí)現(xiàn)方式(附Demo),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
利用Netty+SpringBoot實(shí)現(xiàn)定時(shí)后端向前端推送數(shù)據(jù)
這篇文章主要介紹了BIO、NIO、AIO三種Java?IO模型,并探討了如何使用Spring?Boot集成Netty實(shí)現(xiàn)后臺(tái)向前端推送信息的功能,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01
Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之藥店信息管理系統(tǒng)的實(shí)現(xiàn)
這是一個(gè)使用了java+SSM+JSP+layui+maven+mysql開(kāi)發(fā)的藥店信息管理系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有藥店信息管理該有的所有功能,感興趣的朋友快來(lái)看看吧2022-01-01

