# windows解决logback中文乱码,以及高亮问题
# 前言
近日在windows上开发一款小工具,为了方便排查问题,特地的加入了logback进行记录日志,奈何在cmd中运行的时候中文就乱码了,并且也没有颜色高亮.下文就是我的解决办法.
# 一、中文乱码
代码语言:javascript复制面对中文乱码这个问题,首先想到的是改编码集,这里就分为两个端了.可以改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>
# 二、无高亮
代码语言:javascript复制虽然乱码解决了,但看着黑乎乎的窗口还是有点烦呀.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 如下:
代码语言:javascript复制<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