Подтвердить что ты не робот

Выводные цвета PyCharm

Я использую PyCharm для разработки приложения GAE в Mac OS X. Есть ли способ отображать цвета в консоли запуска PyCharm?

Я установил обработчик для вывода цветов в формате ansi. Затем я добавил обработчик:

LOG = logging.getLogger()
LOG.setLevel(logging.DEBUG)
for handler in LOG.handlers:
    LOG.removeHandler(handler)

LOG.addHandler(ColorHandler())

LOG.info('hello!')
LOG.warning('hello!')
LOG.debug('hello!')
LOG.error('hello!')

Но цвет тот же.

PyCharm run console output

EDIT:

Ответ от JetBrains отслеживать проблемы: Измените строку 55 фрагмента от sys.stderr до sys.stdout. поток stderr всегда окрашен в красный цвет, а stdout - нет.

Теперь цвета отображаются правильно.

4b9b3361

Ответ 1

PyCharm изначально не поддерживает эту функцию, однако вы можете скачать плагин Grep Console и установить цвета по своему усмотрению.

Вот скриншот: http://plugins.jetbrains.com/files/7125/screenshot_14104.png (ссылка не работает)

Я надеюсь, что это поможет несколько :), хотя это не обеспечивает полностью окрашенную консоль, но это шаг к этому.

Ответ 2

По крайней мере, с PyCharm 2017.2 вы можете сделать это, включив:

Запустить | Редактировать конфигурации... | Конфигурация | Эмулировать терминал в выходной консоли

Run configuration

enter image description here

Ответ 3

Поздно на вечеринку, но кто-нибудь еще с этой проблемой, вот решение, которое работало для меня:

import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

Это пришло из этого ответа

Ответ 4

Что для меня решило (на PyCharm 2017.2), было Preferences -> Editor -> Color Scheme -> Console Colors и изменение цвета Console -> Error output. Конечно, это также изменяет цвет ошибки, но по крайней мере вы не видите красным все время...

Ответ 5

Я обнаружил следующее решение. По-видимому, Pycharm перенаправляет sys.stdout. Из документации модуля sys:

sys.__stdin__
sys.__stdout__
sys.__stderr__

Эти объекты содержат исходные значения stdin, stderr и stdout в начале программы. Они используются во время финализации и может оказаться полезным для печати в реальном стандартном потоке независимо от того, объект sys.std * был перенаправлен.

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

Поэтому для решения этой проблемы вы можете перенаправить вывод на sys.__stdout__. Пример конфигурации из моего log_config.yml:

console:
  class: logging.StreamHandler
  level: DEBUG
  stream: "ext://sys.__stdout__"
  formatter: colorFormatter

Ответ 6

PyCharm 2019.1.1 (Windows 10, 1709) - запущенный фрагмент как есть - работает правильно.

Ошибка: setFormatter - не работает.

Исправление: внесите изменения в строку 67 и избавьтесь в строке 70-71 (добавление неформатированного обработчика).

self.stream.write(record.msg + "\n", color)

в

self.stream.write(self.format(record) + "\n", color)

Строка 70-71 может быть перемещена в ручном режиме создания файла для сохранения возможности тестирования:

if __name__ == "__main__":
    logging.getLogger().setLevel(logging.DEBUG)
    logging.getLogger().addHandler(ColorHandler())

    logging.debug("Some debugging output")
    logging.info("Some info output")
    logging.error("Some error output")
    logging.warning("Some warning output")

По сравнению со стандартным StreamHandler:

import logging
import logging_colored

log_format = logging.Formatter("[%(threadName)-15.15s] [%(levelname)-5.5s]  %(message)s")
logger = logging.getLogger('Main')
logger.setLevel(logging.DEBUG)

console = logging.StreamHandler()
console.setFormatter(log_format)
logger.addHandler(console)

console = logging_colored.ColorHandler()
console.setFormatter(log_format)
logger.addHandler(console)
...

Ответ 7

2019 сентябрь: сообщество PyCharm 2019,1

PyCharm покрасил все журналы, включая информацию/отладку, в красный.

В итоге: это не проблема PyCharm, это то, как настроено значение по умолчанию logging. Все, что написано в sys.stderr, окрашено красным PyCharm. При использовании StreamHandler() без аргументов потоком по умолчанию является sys.stderr.

Для получения неокрашенных журналов укажите logging.StreamHandler(stream=sys.stdout) в базовой конфигурации следующим образом:

logging.basicConfig(
    level=logging.DEBUG,
    format='[%(levelname)8s]:  %(message)s',
    handlers=[
        logging.FileHandler(f'{os.path.basename(__file__)}.log'),
        logging.StreamHandler(sys.stdout),
    ])

или быть более многословным:

logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))

Это исправило мои красные журналы PyCharm.