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

前言#

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

一、中文乱码#

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

1
2
3
4
5
6
7
<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的官方解决方案即可,配置如下:

1
2
3
4
5
6
7
8
<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 如下:

1
2
3
4
5
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
<version>1.17.1</version>
</dependency>

三、总结#

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

感谢您的阅读,本文由 Onew 版权所有。如若转载,请注明出处:Onew(https://onew.me/2018/10/08/logback-win/
用c造一个日志记录的轮子
分享一次jna内存泄露问题定位BUG的过程