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

Posted

技术标签:

【中文标题】用另一种颜色显示 System.out.println 输出【英文标题】:Show System.out.println output with another color 【发布时间】:2011-10-28 19:02:03 【问题描述】:

我有一个大项目要调试,我想知道是否有任何方法可以用来更改 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");

为了提高可读性。

EDIT

使用 sysout 我有这个

与 syserr 我有这个

【问题讨论】:

How to print color in console using System.out.println?的可能重复 这里报告的大多数方法都可以在系统控制台上工作,但不能在 Eclipse 控制台上工作,这就是问题所在。 【参考方案1】:

在 Eclipse 中,最简单的方法是使用System.err.println 来表示您希望显示为红色的行——我相信这是默认设置。 (您可以在首选项 -> 运行/调试 -> 控制台中更改它)。

当然,在真实控制台中运行时不会出现这种差异,但我不认为Eclipse控制台支持ANSI颜色转义序列等。

编辑:对于 Windows 控制台,我希望 ANSI escape sequences 能够工作。它不是非常可移植的,但如果这不是问题,你可以创建一个类来适当地封装转义序列,所以你可以调用类似的东西:

ansiConsole.printRed("sample line in red");
ansiConsole.printBlue("sample line in blue");

(我可能会让这些方法在每次调用后返回到“当前”颜色。)

编辑:如 cmets 中所述,Jansi 库已经存在,因此您不妨使用它。它没有上面描述的方法,但我相信它仍然会做你想做的......

【讨论】:

@OpenMind:是的,但方式完全不同。你之前说的“我没有相同的结果”是什么意思? @OpenMind:每次写入后尝试刷新 - 我怀疑这是缓冲问题。 不工作,我也试过你的 Jansi 库。没有称为 printRed() 的方法! @OpenMind:“我的”Jansi 库?我没有任何 ANSI 转义序列库 - 我建议你自己写一个:“你可以创建一个类”... (话虽如此,听起来 Jansi 已经拥有您想要的功能 - 只是没有像我描述的那样封装。将在答案中编辑参考。)【参考方案2】:

请参考以下代码。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");
       

【讨论】:

其实\033[0m代表重置。 太棒了!我认为这应该是公认的答案 我没有得到颜色,只有“?[32mSome 测试文本?[0m”显示在我的 Eclipse 控制台中【参考方案3】:

请看Jansi(Jansi's Github)

Jansi 是一个小型 java 库,允许您使用 ANSI 转义 序列来格式化您的控制台输出,即使在 Windows 上也可以使用。

【讨论】:

你可以使用这个:java2s.com/Code/Jar/j/Downloadjansi14jar.htm,如果你想使用 jar 而不是存档。这解决了我在 eclipse 中的导入问题。【参考方案4】:

您似乎想使用不同的颜色突出显示System.out.println()的输出以帮助您调试,为什么不将System.out的所有输出重定向到程序入口点中的文件:

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

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

【讨论】:

以上是关于用另一种颜色显示 System.out.println 输出的主要内容,如果未能解决你的问题,请参考以下文章

用另一种颜色替换图像中的特定颜色

从一种方法打印数组到另一种方法

如何在 eps 文件的每个对象中用一种颜色替换另一种颜色? [关闭]

System.out.print() 在测试方法中不显示任何内容

另一种循环——递归

用另一种方法访问数组