Java库:Jansi - 彩色日志输出体验

本文介绍如何使用Jansi库在Java应用中实现彩色及带样式的日志输出,适用于Spring Boot等环境。通过简单示例展示了如何利用ANSI转义码格式化控制台输出,并分享了使用技巧及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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"));

可以用jansiANSI符号控制颜色,具体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();

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值