Показать вывод System.out.println другим цветом

У меня есть большой проект для отладки, и мне было интересно, могу ли я использовать его для изменения метода System.out.println в выводе eclipse.

Например :

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


person Wassim AZIRAR    schedule 17.08.2011    source источник
comment
возможный дубликат Как печатать цвет в консоли с помощью System. out.println?   -  person Richard J. Ross III    schedule 28.02.2013
comment
большинство описанных здесь методов работают на системной консоли, но НЕ на консоли Eclipse, о чем и был вопрос.   -  person Hugo Zaragoza    schedule 26.09.2015


Ответы (4)


В Eclipse самым простым подходом было бы использовать System.err.println для строк, которые вы хотите выделить красным — я считаю, что это значение по умолчанию. (Вы можете изменить его в «Настройки» -> «Выполнить/Отладить» -> «Консоль»).

Конечно, эта разница не проявится при работе в настоящей консоли, но я не думаю, что консоль Eclipse поддерживает escape-последовательности цветов ANSI и т. д.

РЕДАКТИРОВАТЬ: Для консоли Windows я ожидаю, что экранированные последовательности ANSI будут работать. Это не чрезвычайно переносимо, но если это не проблема, вы можете просто создать класс для соответствующей инкапсуляции escape-последовательностей, чтобы вы могли вызывать что-то вроде:

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

(Я бы, вероятно, заставил эти методы возвращаться к тому, какой был «текущий» цвет после каждого вызова.)

РЕДАКТИРОВАТЬ: Как отмечено в комментариях, библиотека Jansi уже существует, поэтому вы можете использовать ее. У него нет описанных выше методов, но я уверен, что он все равно будет делать то, что вы хотите...

person Jon Skeet    schedule 17.08.2011
comment
@OpenMind: Да, но совершенно по-другому. Что вы имеете в виду, говоря, что у меня не было такого же результата раньше? - person Jon Skeet; 17.08.2011
comment
@OpenMind: попробуйте сбрасывать после каждой записи - я подозреваю, что это проблема с буферизацией. - person Jon Skeet; 17.08.2011
comment
Не работает, я также попробовал вашу библиотеку Jansi. Там нет метода с именем printRed()! - person Wassim AZIRAR; 17.08.2011
comment
@OpenMind: моя библиотека Янси? У меня нет библиотеки для escape-последовательностей ANSI - я предлагал вам написать ее самостоятельно: вы могли бы просто создать класс... - person Jon Skeet; 17.08.2011
comment
(Сказав это, похоже, что у Янси уже есть нужная вам функциональность, просто она не инкапсулирована, как я описал. Отредактирует ссылку в ответе.) - person Jon Skeet; 17.08.2011
comment
Для Elipse Luna и MacOS 10.10 у меня сработало только это: mihai-nita.net/2013/06/03/eclipse-plugin-ansi-in-console - person Hugo Zaragoza; 26.09.2015

Пожалуйста, обратитесь к следующему коду. Также обратитесь к этой ссылке для цветовых кодов 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");
    }   
}
person Sachin Gaykar    schedule 05.09.2014
comment
на самом деле \033[0m означает сброс. - person Marcus Junius Brutus; 18.11.2015
comment
Великолепно! Я думаю, что это должен быть принятый ответ - person doc; 14.04.2017
comment
я не понимаю цвет, только ?[32mSome test text?[0m отображается в моей консоли eclipse - person datdinhquoc; 10.05.2017

Пожалуйста, взгляните на Янси (Гитхаб Янси)

Jansi — это небольшая java-библиотека, которая позволяет вам использовать управляющие последовательности ANSI для форматирования вывода консоли, который работает даже в Windows.

person kv-prajapati    schedule 17.08.2011
comment
Вы можете использовать это: java2s.com/Code/Jar/j/Downloadjansi14jar.htm если вы хотите использовать банку вместо архива. Это решило мою проблему с импортом в eclipse. - person Eagle; 18.09.2015

Кажется, вы хотите выделить вывод System.out.println() разными цветами, чтобы помочь вам отладить, почему бы не перенаправить весь вывод System.out в файл в точке входа вашей программы:

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

Затем используйте какой-нибудь бесплатный портативный инструмент для мониторинга файла журнала в режиме реального времени с настраиваемой функцией выделения разными цветами, например BareTail , чтобы просмотреть этот файл.

person Ken Chan    schedule 17.08.2011