2011-08-17 41 views
7

我有一个大项目的调试,我想知道是否有反正我可以用它来改变System.out.println方法在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我有这个 sysout

与SYSERR我有这个 syserr

+0

可能重复(HTTP [如何打印使用System.out.println在控制台的颜色?]://计算器。com/questions/5762491/how-to-print-color-in-console-using-system-out-println) –

+0

这里报告的大多数方法都是在系统控制台上工作,而不是在Eclipse控制台上工作,这就是问题所在。 –

回答

20

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

这种差别将不会显示在课程的真正控制台运行的时候,但我不认为 Eclipse控制台支持ANSI颜色转义序列等

编辑:对于Windows控制台,我期望工作。这不是巨大便携,但如果这不是一个问题,你可以只创建一个类来适当地封装转义序列,所以你可以调用类似:

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

(我可能会做出那些方法返回回到每次调用后的“当前”颜色)

编辑:正如评论中指出的那样,Jansi库已经存在,所以你不妨使用它。它不具有上述的方法,但我敢肯定,它还是会做你想要什么......

+0

我尝试了syserr,但没有得到相同的结果。 –

+0

@OpenMind:是的,但方式完全不同。你以前的“我没有同样的结果”是什么意思? –

+0

@OpenMind:每次写入后尝试刷新 - 我怀疑这是一个缓冲问题。 –

2

请看看JansiJansi's Github

Jansi是一个小型的Java库允许您使用ANSI转义 序列来格式化您的控制台输出,它甚至可以在Windows上工作。

+0

你可以使用这个:http://www.java2s.com/Code/Jar/j/Downloadjansi14jar.htm如果你想使用jar而不是归档。这解决了我在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来查看此文件。

5

请参考以下代码。另请参阅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"); 
    } 
} 
+0

好的答案!它为我工作。谢谢。 – androidevil

+1

实际上'\ 033 [0m'代表重置。 –

+0

太棒了!我认为这应该是被接受的答案 – doc

相关问题