Python PyCharm日志输出颜色

Python PyCharm日志输出颜色,python,google-app-engine,logging,pycharm,Python,Google App Engine,Logging,Pycharm,我正在使用PyCharm在Mac OS X中开发一个GAE应用程序。有没有办法在PyCharm的运行控制台中显示颜色 我已经设置了一个输出ansi格式的颜色。然后,我添加了处理程序: LOG = logging.getLogger() LOG.setLevel(logging.DEBUG) for handler in LOG.handlers: LOG.removeHandler(handler) LOG.addHandler(ColorHandler()) LOG.info('h

我正在使用PyCharm在Mac OS X中开发一个GAE应用程序。有没有办法在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!')
但是颜色是一样的

编辑:

来自JetBrains的响应:将代码段的第55行从sys.stderr更改为sys.stdout。stderr流总是用红色着色,而stdout则不是


现在颜色已正确显示。

PyCharm本机不支持该功能,但您可以下载并根据需要设置颜色

以下是一个屏幕截图: (链接已断开)


我希望它能有所帮助:)虽然它没有提供完全彩色的控制台,但这是朝着它迈出的一步。

至少从PyCharm 2017.2开始,您可以通过启用:

运行|编辑配置…|配置|在输出控制台中模拟终端


我(在PyCharm 2017.2上)解决这个问题的方法是
首选项->编辑器->配色方案->控制台颜色
并更改
控制台->错误输出的颜色。当然,这也会改变错误颜色,但至少你不会一直看到红色…

我发现了以下解决方案。显然Pycharm重定向了sys.stdout。从:

这些对象包含stdin、stderr和stdout的原始值 在节目开始时。它们在最终确定期间使用,并且 打印到实际的标准流可能很有用,无论 sys.std*对象已重定向

它还可用于将实际文件还原为已知的工作文件 对象,以防它们被损坏的对象覆盖。 但是,执行此操作的首选方法是显式保存 替换之前的流,并还原保存的对象

因此,要解决此问题,可以将输出重定向到
sys.\uu stdout\uuu
。my log_config.yml中的配置示例:

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

派对迟到了,但其他任何有这个问题的人,以下是对我有效的解决方案:

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

这来自PyCharm 2019.1.1(Windows101709)——按原样运行——工作正常

错误:设置格式化程序-不工作

修复:在第67行中进行更改,并在第70-71行中删除(未格式化处理程序添加)

行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)
...

2019年9月:PyCharm社区2019.1

PyCharm将所有日志(包括红色中的info/debug)着色

结果是:这不是PyCharm问题,这是默认的
日志记录的配置方式。
写入
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))

这修复了我的redPyCharm日志。

什么类型的PyCharm以及它是什么版本?适用于Mac OS X的PyCharm Pro v3.0.2引用的代码片段脱机了(可能是
xsnippet.org
也脱机了?)-您能解释一下您在哪里将sys.stderr更改为sys.stdout
?在日志配置的处理程序定义中,您也可以简单地添加
'stream':sys.stdout
来实现这一点。这个插件很棒!这正是我想要的。我真的很喜欢“过滤掉”选项。插件非常棒。为我解决了这个问题。我在这个屏幕截图中使用了这个包。请注意,只有在列表视图中选择了“Python”时,才会显示所示的复选框。其他运行类型没有此选项。pycharm中不可用2020@vozman我有pycharm 2020,它就在那里,只是显示的与屏幕截图不完全一样。你能分享一下它现在在哪里可用吗?
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)
...
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))