Java库:Jansi - 彩色日志输出体验
- 环境:JDK8、springboot
- 依赖库:
Jansi
Jansi简介:Jansi是一个小型 Java 库,它允许您使用ANSI 转义码来格式化您的控制台输出,即使在 Windows 上也可以使用。
- 引入依赖
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
<version>2.4.0</version>
</dependency>
- 使用junit体验
@Test
void testJansi() {
System.out.println(ansi()
.eraseScreen()
.fgRgb(188,232,105) // 使用rgb颜色
.a(Ansi.Attribute.UNDERLINE) // + 下划线
.a("Hello") // 作用于"Hello"文字上
.bg(GREEN) // 绿色背景
.fgRgb(189,233,105)
.a(Ansi.Attribute.UNDERLINE_OFF) // - 下划线
.a("World") // 作用于...
.reset()); // 输出
}
-
输出
-
总结:下面有彩蛋
如果自己有需求可以对它进行二次封装
- 使用场景
老实说,打印彩色字体打印在控制台上确实比较少见,日志库也有颜色的功能,但没有jansi的颜色、样式丰富,但是放眼看看node.js
配合color.js
的日志输出就很前端美学
所以,有jansi库和没有对于开发效率而言没有半毛钱关系,如果你和我一样在意Java服务器开发日志输出的优雅、美学方面,那Jansi
正是你所需要的
- 彩蛋
System.out.println(ansi().eraseScreen().a("\33[44m\n" +
"\33[40m\33[30m //\n" +
"\33[37m \\\\ //\n" +
"\33[36m \\\\ //\n" +
"\33[35m ##DDDDDDDDDDDDDDDDDDDDDD##\n" +
"\33[34m ## DDDDDDDDDDDDDDDDDDDD ##\n" +
"\33[33m ## hh hh ##\n" +
"\33[32m ## hh // \\\\ hh ##\n" +
"\33[31m ## hh // \\\\ hh ## \n" +
"\33[30m ## hh hh ##\n" +
"\33[31m ## hh wwww hh ##\n" +
"\33[32m ## hh hh ##\n" +
"\33[33m ## MMMMMMMMMMMMMMMMMMMM ##\n" +
"\33[34m ##MMMMMMMMMMMMMMMMMMMMMM##\n" +
"\33[35m \\/ \\/\n"
+ "\33[44m"));
可以用
jansi
对ANSI
符号控制颜色,具体ANSI去Google或百度
图片转成ANSI格式并打印在控制台
- 再给大家看个更牛逼的
原图:
没错,因为想到
jansi
底层用的是ansi
,所以找到能将图片转ansi的文件(也就是.ans文件)即可
图片 convert ANSI(国外网站):https://manytools.org/hacker-tools/convert-image-to-ansi-art/
如此考虑下来,因为图片转ANSI的精度肯定没有图片的精度高,那就用精度低的Logo试一试:jansi官网的Log
转成ansi
文件后,效果基本上可以还原了
BufferedReader bufferIs = new BufferedReader(
new FileReader("D:\\Desktop\\jansi-ansi-art.utf.ans"));
StringBuilder sb = new StringBuilder();
String str = null;
while ((str = bufferIs.readLine()) != null) { sb.append(str + "\n"); }
System.out.println(ansi().eraseScreen().a(sb));
bufferIs.close();