项目上生产环境时出现一个问题,生成的日志文件存在乱码,服务器编码为 LANG=zh_US.UTF-8,按理说中文不会存在乱码,这里存在一个问题,就是在SIT等其他环境我们使用的连接工具为Xshell,但生产环境是通过4A平台提供的SecureCRT工具进行连接,SecureCRT工具的编码默认不是UTF-8,并且无法永久修改为UTF-8,所以每次登录上远程连接首先要修改SecureCRT工具的编码,修改完编码为UTF-8之后再执行启动脚本,生成日志依旧存在乱码。判断原因应该是编码字符集与解码字符集不一致,采用脚本里面强制编码的方式。

原先脚本中配置的JVM参数:

JVM_OPTS="$JAVA_OPTS -Denv=pro -Dpro_meta=$APOLLO_ADDR -Dname=$APP_NAME -Dlogging.path=$LOBGACK_PATH -Xms3072M -Xmx3072M"

在JVM参数中增加编码配置之后,JVM参数如下:

JVM_OPTS="$JAVA_OPTS -Denv=pro -Dpro_meta=$APOLLO_ADDR -Dname=$APP_NAME -Dlogging.path=$LOBGACK_PATH -Xms3072M -Xmx3072M -Dfile.encoding=utf-8 -Dsun.jnu.encoding=utf-8"

配置完重启生效。

文件编码和解码字符集解释

计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码";
反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密。在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码。

日志文件的解码字符集,可通过下载日志文件到本地,然后通过notepad打开查看。

日志文件的编码字符集。可通过下面的Java代码获取Java虚拟机使用的字符集。

String charsetName = Charset.defaultCharset().name();

通过比对解码和编码字符集,查看是否一致。

通过配置JVM参数解决生成日志存在乱码问题的更多相关文章

  1. JVM基础系列第14讲:JVM参数之GC日志配置

    说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...

  2. 【Tomcat】Tomcat配置JVM参数步骤

    这里向大家描述一下如何使用Tomcat配置JVM参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK ...

  3. Tomcat配置JVM参数步骤

    这里向大家描述一下如何使用Tomcat配置JVM参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK ...

  4. 详解Tomcat配置JVM参数步骤

    这里向大家描述一下如何使用Tomcat配置JVM参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK ...

  5. 高手教大家如何配置JVM参数

    /usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K ...

  6. tomcat 配置jvm参数

    设置JVM参数在Windows下,在$TOMCAT_HOME/bin/catalina.bat,Linux下,在$TOMCAT_HOME/bin/catalina.sh的前面,增加如下设置: JAVA ...

  7. IDE配置jvm参数

    -------- IntelliJ IDEA 配置参数:-Xms34m -Xmx234m 内存初始化大小,最小和最大值: 测试代码: public class JVMDemoTest { public ...

  8. 【IntelliJ idea/My/ecplise】启动项目前,修改配置JVM参数

    My/ecplise下都是一样的: IDEA下:

  9. IDEA配置JVM参数

随机推荐

  1. php(apache)切换版本

    php(apache)切换版本 1.brew link php@7.1 2.上两行写入 ~/.bash_profile文件 3.source ~/.bash_profile 4.sudo vi /et ...

  2. lamp源码安装

    先从Apache开始装->MySQL->PHP PHP在编译的时候需要用到MySQL的一些参数,需要用到Apache的参数. 准备工作: 1.查看系统中是否有自带的Apache 如果提示你 ...

  3. HDU 4612 Warm up (边双连通分量+缩点+树的直径)

    <题目链接> 题目大意:给出一个连通图,问你在这个连通图上加一条边,使该连通图的桥的数量最小,输出最少的桥的数量. 解题分析: 首先,通过Tarjan缩点,将该图缩成一颗树,树上的每个节点 ...

  4. P2709 小B的询问-莫队

    思路 :依旧是 分块 块内按照 r 排序 不同块按照 L排序,处理好增加 删除对结果的影响即可. #include<bits/stdc++.h> using namespace std; ...

  5. JS运算符问题

    以下代码是否报错,如果不报错输出什么,为什么 var x = !!"Hello" + (!"world", !!"from here!!") ...

  6. 事务(transaction )

    事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 事务是恢复和并发控制的基本单位. 事务有4个特性:原子性.一致性.隔离性.持久性.(即ACID) 原子 ...

  7. springboot的常见问题错误

    一: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 2 ...

  8. Python二进制转十进制算法、十进转二进制算法

    二进制数转换成十进制数:二进制数从右向左每位数乘以2的次方(从0开始,从右向左依次+1),然后相加求和即可 如:0101转成十进制为:1*20+0*21+1*22+0*23 =1+0+4+0=5 算法 ...

  9. 深入理解JVM(7)——类加载器

    一.类和类加载器 a)        类加载器的作用:将class文件加载到JVM的方法区,并且在方法区中创建一个java.lang.Class对象作为外界访问这个类的接口. b)        类和 ...

  10. Kafka Streams简介: 让流处理变得更简单

    Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...