天天看点

java如何打印带颜色的日志到控制台

作者:小王子向着标竿直跑

简介

添加一些颜色可以使日志更易于阅读。

在本文中,我们将了解如何为控制台的日志添加颜色。

在开始之前,我们需要知道,Eclipse 控制台中只支持部分颜色的设置。 Eclipse 中的控制台不支持由 Java 代码设置颜色,因此本文中介绍的解决方案在 Eclipse 控制台中不起作用,代码在IDEA演示。

2. 如何使用 ANSI 代码对日志进行颜色设置

实现彩色日志记录的最简单方法是使用 ANSI 转义字符,通常称为 ANSI 代码。

ANSI 代码是一些终端解释为命令的特殊字节序列。

让我们打印一个 ANSI 代码:

System.out.println("我是文本");
System.out.println("\u001B[31m" + "我是红色文本");           

在输出中,我们看到 ANSI 代码没有打印出来,字体颜色变成了红色:

java如何打印带颜色的日志到控制台

注意,我们需要确保在完成日志打印后重置字体颜色。

很简单, 我们可以通过打印\u001B[31m,即ANSI复位命令。

重置命令会将控制台重置为其默认颜色。 不一定是黑色,它可以是白色或控制台配置的任何其他颜色。 例如:

System.out.println("我是文本");
System.out.println("\u001B[31m" + "我是红色文本" + "\u001B[0m"+"清除颜色开始");
System.out.println("现在没有颜色了");           

输出结果:

java如何打印带颜色的日志到控制台

大多数日志库都支持 ANSI 代码,这使我们能够构建一些丰富多彩的日志器。

例如,我们可以快速构建一个日志器,为不同的日志级别设置不同的颜色。

private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleCorlor20221022.class);

public void logDebug(String logging) {
    LOGGER.debug("\u001B[34m" + 打印日志 + "\u001B[0m");
}
public void logInfo(String logging) {
    LOGGER.info("\u001B[32m" + 打印日志 + "\u001B[0m");
}

public void logError(String logging) {
    LOGGER.error("\u001B[31m" + 打印日志 + "\u001B[0m");
}           

可以看到,控制台输出不同颜色的日志级别,使我们的日志更具可读性:

java如何打印带颜色的日志到控制台

此外,ANSI 代码可用于控制的不仅仅是字体颜色——我们可以控制背景颜色、字体粗细和样式。