web-dev-qa-db-ja.com

PyCharmログ出力の色

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!')

しかし、色は同じです。

PyCharm run console output

編集:

JetBrainsからの応答 issue tracker :スニペットの55行目をsys.stderrからsys.stdoutに変更します。 stderrストリームは常に赤色で着色されますが、stdoutはそうではありません。

色が正しく表示されるようになりました。

42
dablak

PyCharmはその機能をネイティブでサポートしていませんが、 Grepコンソールプラグイン をダウンロードして、好きなように色を設定できます。

これがスクリーンショットです: http://plugins.jetbrains.com/files/7125/screenshot_14104.png (リンクは死んでいます)

それが多少役立つことを願っています:)それは完全に色分けされたコンソールを提供していませんが、それはそれに向けた一歩です。

27
metabuddy

PyCharm 2017.2以降では、以下を有効にすることでこれを行うことができます:

実行|構成を編集... |構成|出力コンソールで端末をエミュレートする

Run configuration

enter image description here

28
phoenix

パーティーに遅れましたが、この問題を抱えている他の誰もが、ここで私のために働いた解決策があります:

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

これは this answer から来ました

9

2019年9月:PyCharmコミュニティ2019.1

PyCharm色すべてのログ情報/デバッグを含む。

その結果は、PyCharmの問題ではなく、これがデフォルトのloggingの構成方法です。 _sys.stderr_に書き込まれたものはすべてPyCharmによって色分けされていますredStreamHandler()を引数なしで使用する場合、デフォルトのストリームは_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ログを修正しました。

1
selyunin

次の解決策を見つけました。どうやら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
0
nmz_razor

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

0
C0oo1D

(PyCharm 2017.2で)私のためにそれを解決したのは、Preferences -> Editor -> Color Scheme -> Console Colorsに行き、Console -> Error outputの色を変更することでした。もちろん、これによってエラーの色も変わりますが、少なくとも常に赤が表示されるわけではありません...

0
Sir Codesalot