通过配置JVM参数解决生成日志存在乱码问题
项目上生产环境时出现一个问题,生成的日志文件存在乱码,服务器编码为 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参数解决生成日志存在乱码问题的更多相关文章
- JVM基础系列第14讲:JVM参数之GC日志配置
说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...
- 【Tomcat】Tomcat配置JVM参数步骤
这里向大家描述一下如何使用Tomcat配置JVM参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK ...
- Tomcat配置JVM参数步骤
这里向大家描述一下如何使用Tomcat配置JVM参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK ...
- 详解Tomcat配置JVM参数步骤
这里向大家描述一下如何使用Tomcat配置JVM参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK ...
- 高手教大家如何配置JVM参数
/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K ...
- tomcat 配置jvm参数
设置JVM参数在Windows下,在$TOMCAT_HOME/bin/catalina.bat,Linux下,在$TOMCAT_HOME/bin/catalina.sh的前面,增加如下设置: JAVA ...
- IDE配置jvm参数
-------- IntelliJ IDEA 配置参数:-Xms34m -Xmx234m 内存初始化大小,最小和最大值: 测试代码: public class JVMDemoTest { public ...
- 【IntelliJ idea/My/ecplise】启动项目前,修改配置JVM参数
My/ecplise下都是一样的: IDEA下:
- IDEA配置JVM参数
随机推荐
- solr6.5.0(windows)教程
第一步:安装Tomcat8重命名结尾加上solr6(自定义) 第二步: 解压solr,把solr-6.5.0\solr-6.5.0\server\solr-webapp下的webapp文件夹拷贝到to ...
- a标签点击不跳转的几种方法
a标签点击不跳转的几种方法 1.onclick事件中返回false <a href="http://www.baidu.com" onclick="return f ...
- Hystrix快速入门
祝大家国庆快乐! 对大部分电商和快递公司来说,每年年底(Q4季度)由于双11等大促活动的存在,将面对大量的用户流量,尤其是属于大促的那几天,无论是用户的商品订单还是物流订单,都将是平时的3倍以上.对于 ...
- 真正“搞”懂http协议01—背景故事
去年读了<图解HTTP>.<图解TCP/IP>以及<图解网络硬件>但是读了之后并没有什么深刻的印象,只是有了一层模糊的脉络,刚好最近又接触了一些有关http的相关内 ...
- mysql 数据库(二)数据库的基本操作
mysql 数据库(二)数据库的基本操作 用户管理,添加权限,创建,显示,使用数据库 1 显示数据库:show databases; 默认数据库: mysql - 用户权限相关数据 test - 用于 ...
- XamarinSQLite教程添加列
XamarinSQLite教程添加列 如果开发者想要在现有的表中添加列,并不需要删除重新创建数据表,只需要修改数据表.操作步骤如下. (1)右击需要添加列的表,单击Add column…(beta)命 ...
- [Web]flask-excel实现excel文件下载的前后端实现
之前同事写了前端表格导出的功能, 前后端逻辑没有梳理, 导致后端代码十分臃肿. 接手之后, 重新选择了前端table插件, 从jqxGrid变更为bootstrapTable. 本来想依赖集成的tab ...
- malloc函数详解 C语言逻辑运算符
今天写线性表的实现,又遇到了很多的难题,C语言的指针真的没学扎实.很多基础都忘了. 一是 :malloc 函数的使用. 二是:C语言逻辑运算符. 一.原型:extern void *malloc(un ...
- Python3从零开始爬取今日头条的新闻【三、滚动到底自动加载】
Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...
- 用shell脚本守护后台进程
假如现在在 crond 中添加了一个每分钟执行的定时任务如下: */ * * * * root cd /data/sbin; sh test.sh >/dev/>& 为了防止上一个 ...