51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

windows解决logback中文乱码,以及高亮问题

# windows解决logback中文乱码,以及高亮问题 {#windows解决logback中文乱码-以及高亮问题}

# 前言 {#前言}

近日在windows上开发一款小工具,为了方便排查问题,特地的加入了logback进行记录日志,奈何在cmd中运行的时候中文就乱码了,并且也没有颜色高亮.下文就是我的解决办法.

# 一、中文乱码 {#一、中文乱码}

面对中文乱码这个问题,首先想到的是改编码集,这里就分为两个端了.可以改cmd的编码集,也可以改java的编码集.一上最方便的是改cmd的编码,只需要在命令执行之前加上一句chcp 65001就可以了.但是这种方式感觉不太自然,于是就跑去改了logback的编码,logback修改编码也很简单.配置如下:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!--填写GBK即可-->
            <charset>GBK</charset>
        </encoder>
</appender>

# 二、无高亮 {#二、无高亮}

虽然乱码解决了,但看着黑乎乎的窗口还是有点烦呀.google了一下,发现没有颜色的根本原因是cmd不支持ANSI escape code,但mac和linux是天生支持的,所以mac和linux能够正常显示高亮,而win不行.这里有了两个解决办法,第一是,下载一个支持ANSI的终端来替代cmd,但是这种太牵强了;第二种使用logback的官方解决方案即可,配置如下:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <!--withJansi 参数改为true-->
    <withJansi>true</withJansi>
    <encoder>
        <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        <charset>GBK</charset>
    </encoder>
</appender>

# 只加这个参数是不行的,还要导入一个jar包pom 如下: {#只加这个参数是不行的-还要导入一个jar包pom-如下}

<dependency>
    <groupId>org.fusesource.jansi</groupId>
    <artifactId>jansi</artifactId>
    <version>1.17.1</version>
</dependency>

# 三、总结 {#三、总结}

内事不决问百度,外事不决问谷歌.

# 四、原文地址 {#四、原文地址}

https://onew.me/logback/2018/09/17/logback_win.html

赞(4)
未经允许不得转载:工具盒子 » windows解决logback中文乱码,以及高亮问题