Python PyCharm日志输出颜色
我正在使用PyCharm在Mac OS X中开发一个GAE应用程序。有没有办法在PyCharm的运行控制台中显示颜色 我已经设置了一个输出ansi格式的颜色。然后,我添加了处理程序: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
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))