PyCharmを使用してMac OS XでGAEアプリを開発しています。PyCharmの実行コンソールで色を表示する方法はありますか?
handler を設定して、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からの応答 issue tracker :スニペットの55行目をsys.stderrからsys.stdoutに変更します。 stderrストリームは常に赤色で着色されますが、stdoutはそうではありません。
色が正しく表示されるようになりました。
PyCharmはその機能をネイティブでサポートしていませんが、 Grepコンソールプラグイン をダウンロードして、好きなように色を設定できます。
これがスクリーンショットです: http://plugins.jetbrains.com/files/7125/screenshot_14104.png (リンクは死んでいます)
それが多少役立つことを願っています:)それは完全に色分けされたコンソールを提供していませんが、それはそれに向けた一歩です。
パーティーに遅れましたが、この問題を抱えている他の誰もが、ここで私のために働いた解決策があります:
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
これは this answer から来ました
2019年9月:PyCharmコミュニティ2019.1
PyCharm色すべてのログ情報/デバッグ赤を含む。
その結果は、PyCharmの問題ではなく、これがデフォルトのlogging
の構成方法です。 _sys.stderr
_に書き込まれたものはすべてPyCharmによって色分けされていますred。 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ログを修正しました。
次の解決策を見つけました。どうやら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
PyCharm 2019.1.1(Windows 10、1709)-実行 snippet そのまま-正しく動作します。
バグ: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)
...
(PyCharm 2017.2で)私のためにそれを解決したのは、Preferences -> Editor -> Color Scheme -> Console Colors
に行き、Console -> Error output
の色を変更することでした。もちろん、これによってエラーの色も変わりますが、少なくとも常に赤が表示されるわけではありません...