zoukankan      html  css  js  c++  java
  • 通过配置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();

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

  • 相关阅读:
    数据结构--实验5---排序(c)
    数据结构---实验4--查找(c)
    Tornado 模板(StaticFileHandler/static_path/template_path等) 笔记
    tornado请求头/状态码/接口 笔记
    Tornado 文件操作笔记
    tornado输入-get_query_argument()等 笔记
    tornado 笔记
    干货-递归下降分析器 笔记(具体看Python Cookbook, 3rd edition 的2.19章节)
    xml.sax 笔记
    HTMLParser 笔记
  • 原文地址:https://www.cnblogs.com/zjfjava/p/10748044.html
Copyright © 2011-2022 走看看