zoukankan      html  css  js  c++  java
  • IDEA运行Tomcat,控制台日志乱码

    一、信息

    IDEA:2019.1

    Tomcat:9.0.24

    二、问题描述

    server中日志正常显示,但Tomcat Catalina Log日志乱码。

    三、解决思路

    既然出了乱码,那肯定是编码不统一,所以我将IDEA中设置编码的地方(包括IDEA的配置文件)全都设置成了UTF-8,结果不但问题没有解决,我的server和tomcat catalina log全部出现了乱码。

    https://www.cnblogs.com/aligege/p/10550432.html,翻到了这篇博客,博主思路很正确,不应当只修改IDEA中的编码,还要修改Tomcat日志配置文件中的编码,让它们统一才行。

     这里的默认值是GBKSS,修改成UTF-8,依旧乱码。改为GBK后,server的日志正常了,tomcat catalina log还是乱码。

    应该是catalina的相关配置文件,网上查了好几篇博客都说修改这个文件,于是乎按照教程走,加上了-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8

    if [ -z "$LOGGING_MANAGER" ]; then
      LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
    fi

    依旧乱码,这里修改的是logging_manager的值,那这一行代码是什么意思呢?跳到catalina.sh文件的最上方,tomcat不愧是顶级开源项目,人家这注释写的可真是太香了。

    #   LOGGING_MANAGER (Optional) Override Tomcat's logging manager
    #                   Example (all one line)
    #                   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

    意思是覆盖tomcat的日志管理器记录,也就是说我们修改了日志管理器这里的编码,但问题并未解决,这时我注意到这行注释上方还有一段注释。

    #   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file
    #                   Example (all one line)
    #                   LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"

    意思是覆盖tomcat的日志配置文件,难道这里覆盖掉了?跳到文件下方代码。

    # Set juli LogManager config file if it is present and an override has not been issued
    if [ -z "$LOGGING_CONFIG" ]; then
      if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
        LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
      else
        # Bugzilla 45585
        LOGGING_CONFIG="-Dnop"
      fi
    fi

    我们可以看到tomcat catalina log日志配置配置文件就是我们刚才修改过的logging.properties文件,仔细看了一下文件中的内容后,原来tomcat catalina log日志配置的代码就是下面这几行。

    ############################################################
    # Handler specific properties.
    # Describes specific configuration info for Handlers.
    ############################################################
    
    1catalina.org.apache.juli.AsyncFileHandler.level = FINE
    1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
    1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
    1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
    1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
    
    2localhost.org.apache.juli.AsyncFileHandler.level = FINE
    2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
    2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
    2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
    2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8
    
    3manager.org.apache.juli.AsyncFileHandler.level = FINE
    3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
    3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
    3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
    3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
    
    4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
    4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
    4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
    4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
    4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

    试着将这几行代码中的UTF-8全部改为GBK后,问题圆满解决。

    四、遗留问题

    之所以会出现乱码,肯定是编码格式不统一导致的。我们将tomcat的logging.properties配置文件中的编码格式都设置成了GBK,IDEA中能找到的设置编码的地方我都设置成了UTF-8,问题居然得到了解决。

    五、猜想

    IDEA中output输出的内容编码是GBK格式的,所以我们将tomcat输出的日志编码改为GBK后问题解决。但我确实没找到IDEA中关于output输出内容的编码设置。

  • 相关阅读:
    Practical .NET2 and C#2 翻译样章
    Resume
    Double Dispatch And Visitor Pattern
    Separate Contract from Implementation
    Kerberos简介
    责任分离的思想 oo dp orm aop
    Resources on Debugging/Tracing WPF
    沿着“重用”我们一路走来——SA、OO(DP)、Component、SOA、AOP
    Enterprise Test Driven Develop
    How does ElementName Binding work – Part 2 BindingExpression
  • 原文地址:https://www.cnblogs.com/N1ckeyQu/p/11629167.html
Copyright © 2011-2022 走看看