使用另一种颜色显示System.out.println输出

11

我有一个需要调试的大型项目,想知道是否有任何方法可以更改Eclipse输出中System.out.println方法的方式。

例如:

System.out.println("I want this to be red");
System.out.println("I want this to be blue");
System.out.println("I want this to be yellow");
System.out.println("I want this to be magenta");

为了更好的可读性。

编辑

使用sysout,我得到了这个结果 sysout

使用syserr,我得到了这个结果 syserr


可能是重复的问题:如何使用System.out.println在控制台中打印颜色? - Richard J. Ross III
1
这里报告的大多数方法适用于系统控制台,但不适用于 Eclipse 控制台,而这正是问题所在。 - Hugo Zaragoza
4个回答

25
在Eclipse中,最简单的方法是使用System.err.println来打印想要显示为红色的行 - 我相信这是默认设置。(您可以在“首选项->运行/调试->控制台”中更改它)。
当然,在真正的控制台中运行时,这种差异不会显示出来,但我认为Eclipse控制台不支持ANSI颜色转义序列等。
编辑:对于Windows控制台,我希望ANSI转义序列能够工作。虽然它不是非常便携,但如果没有问题,您可以创建一个类来适当地封装转义序列,这样您就可以调用类似以下的内容:
ansiConsole.printRed("sample line in red");
ansiConsole.printBlue("sample line in blue");

(我可能会使这些方法在每次调用后返回到“当前”颜色。)
编辑:如评论中所述,Jansi库已经存在,因此您可以使用它。它没有上述描述的方法,但我相信它仍然可以满足您的需求...

@OpenMind:是的,但方式完全不同。你之前说的“我没有得到相同的结果”是什么意思? - Jon Skeet
@OpenMind:每次写入后尝试刷新 - 我怀疑这是缓冲问题。 - Jon Skeet
不起作用,我也尝试了你的Jansi库。没有叫做printRed()的方法! - Wassim AZIRAR
1
@OpenMind: “我的” Jansi 库?我没有任何用于 ANSI 转义序列的库 - 我建议你自己编写一个:“你可以创建一个类”... - Jon Skeet
话虽如此,听起来Jansi已经具备了您想要的功能 - 只是没有像我描述的那样封装。我会在答案中编辑一个参考。 - Jon Skeet
对于Elipse Luna和MacOS 10.10,我唯一成功的方法是使用这个:http://mihai-nita.net/2013/06/03/eclipse-plugin-ansi-in-console/ - Hugo Zaragoza

13

请参考以下代码。还请参阅此链接以获取ANSI颜色代码。 http://en.wikipedia.org/wiki/ANSI_escape_code

public class ColourConsoleDemo {
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("\033[0m BLACK");
        System.out.println("\033[31m RED");
        System.out.println("\033[32m GREEN");
        System.out.println("\033[33m YELLOW");
        System.out.println("\033[34m BLUE");
        System.out.println("\033[35m MAGENTA");
        System.out.println("\033[36m CYAN");
        System.out.println("\033[37m WHITE");
    }   
}

2
实际上,\033[0m 代表重置。 - Marcus Junius Brutus
太棒了!我认为这应该是被采纳的答案。 - doc
9
我看不到颜色,在我的eclipse控制台中只显示"?[32m一些测试文本?[0m"。 - Dee
他们想要在Eclipse控制台中打印彩色文本,而不是Windows命令提示符或终端。Eclipse控制台不是一个ansi兼容的控制台。 - Nor.Z

2
请查看JansiJansi的Github)。Jansi是一个小型Java库,允许您使用ANSI转义序列格式化控制台输出,即使在Windows上也可以工作。

如果你想使用一个jar而不是档案文件,可以使用这个链接:http://www.java2s.com/Code/Jar/j/Downloadjansi14jar.htm。这解决了我在eclipse中的导入问题。 - Eagle

0

看起来你想要通过不同的颜色突出显示System.out.println()的输出,以帮助你进行调试。为什么不将System.out的所有输出重定向到程序入口点的一个文件中呢:

FileOutputStream fis = new FileOutputStream(new File("log.txt"));
PrintStream out = new PrintStream(fis); 
System.setOut(out);

然后使用一些免费且便携的实时日志文件监控工具,该工具具有可配置的高亮功能,可以使用不同的颜色,例如BareTail,来查看此文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接