spring boot jar部署控制台日志乱码的解决

目录
  • spring boot jar部署控制台日志乱码
    • 问题描述
    • 解决
    • 注释掉或删除
  • springboot打包后在Windows控制台运行中文乱码
    • 例如

spring boot jar部署控制台日志乱码

问题描述

spring boot jar包部署,通过java -jar 命令运行.jar文件

代码中通过变量log输出到控制台的中文,乱码,但是仅仅是在运行jar时才乱码;而在用eclipse debug时,正常

代码中通过System.out.println()输出的中文,不论是否是通过jar运行,都正常

日志使用的是默认的logback,未使用log4j

解决

1、resources文件夹新建logback.xml(文件名不可修改)

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- spirng boot 默认使用logback,默认会读取resources文件夹下的名为logback.xml的文件  zhangyu 20180807-->
<configuration debug="false">
  <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
  <property name="LOG_HOME" value="C:/loghome" />
  <!-- 控制台输出 -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
      <!-- <charset>UTF-8</charset> -->
    </encoder>
  </appender>

  <!-- 日志输出级别 -->
  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

2、首先,spring boot 默认使用logback

默认读取resources/下名为logback.xml的日志配置文件,有则读取,没有则使用默认。

3、其次,logback.xml,将

<charset>UTF-8</charset>

注释掉或删除

4、如果,不配置logback.xml

使用默认的配置,那么部署jar包,java -jar xxx.jar,代码中log变量输出的中文,乱码;如果,配置了logback.xml,但是charset使用UTF-8,那么中文依然乱码;只有使用logback.xml,且,charset删除掉,才能确保中文正常。

5、针对这个非常具体的问题

我尝试过,且无用的做法有,在pom的plugin–>spring-boot-maven-plugin–>configuration节点下增加-Dfile.encoding=UTF-8,无用;或者在运行.jar包时,增加参数-Dfile.encoding=UTF-8,依然无用。

springboot打包后在Windows控制台运行中文乱码

springboot打包之后,如果通过java -jar在Windows控制台直接运行,则会出现中文乱码,保存到数据库里面的也是乱码,通过在idea中直接运行不会出现乱码。

为了解决在Windows控制台运行中乱码,在运行脚本加入 -Dfile.encoding=utf-8运行参数

例如

java -jar -Dfile.encoding=utf-8 app-0.0.1-SNAPSHOT.jar

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用bat启动springboot项目并解决乱码问题

    目录 1.springboot项目打包jar 2.编写bat启动springboot脚本 3.bat启动springboot 4.常见问题 4.1.解决bat控制台中文乱码问题 4.2.cd %~dp0不是内部或外部命令 本文主要介绍了使用bat启动springboot项目并解决乱码问题,分享给大家,具体如下: 1.springboot项目打包jar 打包后,在如下目录: 这里打包的springboot的jar文件名为 api-0.0.1-SNAPSHOT.jar 2.编写bat启动spring

  • springboot全局字符编码设置解决乱码问题

    有时候我们会发现这种问题,明明已经设置了字符编码过滤器但是还会有乱码的情况出现,这个问题令我们很是头疼,我之前也遇到过这种情况.那怎么解决呢? springboot编码格式设置有三种方式,不管使用哪种方式,总有一款适合你. 1.在application.properties中设置 #编码格式 spring.http.encoding.force=true spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true se

  • Spring Boot2解决idea console 控制台输出乱码的问题

    idea console控制台输出乱码 Idea默认配置是采用GBK, 而项目工程文件采用的是UTF-8. 编码不一致,导致idea Console控制台输出乱码. 网上的解决方案,大都是直接修改Settings=>Editor=>File Encodings下面的配置,如下图: 将Global Encoding,也就是全局配置编码格式,跟Project Encoding 项目编码格式 配置成一样的就OK了. 全局配置有时候会与项目的编码格式不一样,所以尽量不要动. 但是修改Project E

  • SpringBoot项目中控制台日志的保存配置操作

    SpringBoot 控制台日志的保存配置 情景:SpringBoot项目中需要把控制台日志保存下来. 实现方法: 1.在配置文件application-prod.yml 配置如下: logging: config: classpath:logback-spring-prod.xml 2.logback-spring-prod.xml 这个文件是记录控制台打印日志保存的路径配置如下: <?xml version="1.0" encoding="UTF-8"?&

  • springboot乱码问题解决方案

    这篇文章主要介绍了springboot乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在配置文件中添加 #编码设置 spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true server.tomcat.uri-encoding=UTF-8 使用springboot:run运行时控制台输出

  • spring boot jar部署控制台日志乱码的解决

    目录 spring boot jar部署控制台日志乱码 问题描述 解决 注释掉或删除 springboot打包后在Windows控制台运行中文乱码 例如 spring boot jar部署控制台日志乱码 问题描述 spring boot jar包部署,通过java -jar 命令运行.jar文件 代码中通过变量log输出到控制台的中文,乱码,但是仅仅是在运行jar时才乱码:而在用eclipse debug时,正常 代码中通过System.out.println()输出的中文,不论是否是通过jar

  • Spring Boot 把配置文件和日志文件放到jar外部

    如果不想使用默认的application.properties,而想将属性文件放到jar包外面,可以使用如下两种方法: 只能设置全路径.因为Java -jar运行jar包时,无法指定classpath(无论通过参数还是环境变量,设置的classpath都会被覆盖). 方法1:命令行传参指定spring.config.location java -jar -Dspring.config.location=D:\zTest\config\config1.properties springbootre

  • 解决spring boot + jar打包部署tomcat 404错误问题

    1.spring boot 不支持jsp打jar包,jsp只能打war包. 方法: <packaging>war</packaging> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin

  • Spring Boot Jar 包部署脚本的实例讲解

    当使用 Spring Boot 进行开发时,它可以将项目打包成 Jar 包进行部署,但是我们的部署环境一般都是 Linux,每次手写脚本很烦人,所以我提供了一个简单的脚本,用于部署 Spring Boot 生成的 Jar 包. 脚本内容很简单,就是通过端口 kill 掉旧的进程,并将新的 Jar 包部署上去. #!/bin/bash port=8090 jar_name="上传到服务器上的 Jar 包名称" deployed_jar="服务器上部署的 Jar 包名称"

  • Spring Boot jar 启动时设置环境参数的操作

    Spring Boot jar 启动时设置环境参数 1 摘要 通常在使用 Spring Boot 开发项目时需要设置多环境(测试环境与生产环境等),但是项目打包却只能指定一种环境,有没有一种办法,能够只打一个 jar 包,但是启动的时候指定项目环境?作者经过在网上查阅资料并测试,发现这一功能可以实现,这就大大方便了项目的部署工作(可以实现多环境自动部署). 2 核心代码 2.1 spring Boot 多环境配置 ../demo-web/src/main/resources/applicatio

  • 老生常谈spring boot 1.5.4 日志管理(必看篇)

    spring boot日志默认采用logback进行输出,你可以对logback进行定制化,方法如下: 在resources文件夹下建立logback.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- base.xml in the spring-boot jar, --> <include resource="org/sprin

  • spring boot jar的启动原理解析

     1.前言 近来有空对公司的open api平台进行了些优化,然后在打出jar包的时候,突然想到以前都是对spring boot使用很熟练,但是从来都不知道spring boot打出的jar的启动原理,然后这回将jar解开了看了下,与想象中确实大不一样,以下就是对解压出来的jar的完整分析. 2.jar的结构 spring boot的应用程序就不贴出来了,一个较简单的demo打出的结构都是类似,另外我采用的spring boot的版本为1.4.1.RELEASE网上有另外一篇文章对spring

  • Spring Boot系列教程之日志配置

    前言 日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节.但是,这丝毫不影响它在任何一个系统中的重要的地位. 为了保证服务的高可用,发现问题一定要即使,解决问题一定要迅速,所以生产环境一旦出现问题,预警系统就会通过邮件.短信甚至电话的方式实施多维轰炸模式,确保相关负责人不错过每一个可能的bug. 预警系统判断疑似bug大部分源于日志.比如某个微服务接口由于各种原因导致频繁调用出错,此时调用端会捕获这样的异常并打印ERROR级别的日志,当该错误日志达到一定次数出现的时候

  • Spring boot按日切分spring boot的nohup.out日志文件的方法

    过大的日志文件维护起来存在诸多问题,所以最好是能够按日或按大小切分日志文件,便于查找需要的信息. 网上有各种各样的日志切分方法,有的有用,有的没用,有的还麻烦. 最后搬运最简单易用的切分方法,如下: 安装cronolog 以如下命令启动应用: nohup app.jar | /usr/local/sbin/cronolog /console-%Y-%m-%d.out >> /dev/null 2>&1 & 只是搬运而已,免得挨个方法试过去了 总结 以上所述是小编给大家介绍

  • Spring boot项目部署到云服务器小白教程详解

    本篇文章主要介绍了Spring boot项目部署到云服务器小白教程详解,分享给大家,具体如下: 测试地址:47.94.154.205:8084 一.Linux下应用Shell通过SSH连接云服务器 //ssh 用户名@公网IP ssh josiah@ip // 输入密码 二.开始搭建SpringBoot的运行环境 1.安装JDK并配置环境变量 1) 打开JDK官网 www.oracle.com 2) 找面最新对应的JDK版本,下载 这里要注意的一个问题是:云服务器下载JDK时一定要在本地去ora

随机推荐