Python のログ出力に色を付けるにはどうしたらいいですか? 質問する

Python のログ出力に色を付けるにはどうしたらいいですか? 質問する

少し前に、ログ システム (すべてのメッセージが標準化されていたため) のためと思われる、色付きの出力を持つ Mono アプリケーションを見ました。

現在、Python にはloggingモジュールがあり、出力をカスタマイズするための多くのオプションを指定できます。そのため、Python でも同様のことが可能だと想像していますが、その方法がどこにも見つかりません。

Pythonloggingモジュールをカラーで出力する方法はありますか?

たとえば、エラーは赤で、デバッグ メッセージは青または黄色で表示したいなどです。

もちろん、これには互換性のある端末 (最近の端末のほとんどはそうです) が必要になるでしょうが、logging色がサポートされていない場合は元の出力にフォールバックできます。

ログモジュールを使用して色付きの出力を取得する方法について何かアイデアはありますか?

ベストアンサー1

追加パッケージを必要としないPython 3ソリューション

コミュニティへの注意:回答を編集しないでください。コーディングの点では最適な方法ではないことは承知していますが、プロセスの本質を理解するには最も理解しやすく読みやすい方法です。

1. クラスを定義する

import logging

class CustomFormatter(logging.Formatter):

    grey = "\x1b[38;20m"
    yellow = "\x1b[33;20m"
    red = "\x1b[31;20m"
    bold_red = "\x1b[31;1m"
    reset = "\x1b[0m"
    format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)"

    FORMATS = {
        logging.DEBUG: grey + format + reset,
        logging.INFO: grey + format + reset,
        logging.WARNING: yellow + format + reset,
        logging.ERROR: red + format + reset,
        logging.CRITICAL: bold_red + format + reset
    }

    def format(self, record):
        log_fmt = self.FORMATS.get(record.levelno)
        formatter = logging.Formatter(log_fmt)
        return formatter.format(record)

2. ロガーをインスタンス化する:

# create logger with 'spam_application'
logger = logging.getLogger("My_app")
logger.setLevel(logging.DEBUG)

# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

ch.setFormatter(CustomFormatter())

logger.addHandler(ch)

3. そして以下を使用します:

logger.debug("debug message")
logger.info("info message")
logger.warning("warning message")
logger.error("error message")
logger.critical("critical message")

結果:

ここに画像の説明を入力してください

完全なカラースキーム:

ここに画像の説明を入力してください

Windowsの場合:

このソリューションは、Mac OS、IDE ターミナルで機能します。Windows コマンド プロンプトには、デフォルトでは色がまったくないようです。有効にする方法については、こちらを参照してください。まだ試していません。https://www.howtogeek.com/322432/how-to-customize-your-command-prompts-color-scheme-with-microsofts-colortool/

おすすめ記事