Выводные цвета 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 - нет.
Теперь цвета отображаются правильно.
Ответы
Ответ 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.