ログを簡単にカスタマイズして色分けして見やすくするPythonスクリプト

ログが大量に出力されて見づらいと感じることがあります。

そこで、今回はPythonでログを色分けして見やすくするスクリプトを紹介します。

スクリプト: colorize.py

```python
import re
import sys
import time
import signal

# 色定義
COLOR_CODES = {
    "RED": "\033[91m",
    "GREEN": "\033[92m",
    "YELLOW": "\033[93m",
    "BLUE": "\033[94m",
    "MAGENTA": "\033[95m",
    "CYAN": "\033[96m",
    "RESET": "\033[0m",
}

# 文字列と色のマッピング (辞書で管理)
# 例: r"(FlutterLoader\.loadEntrypoint)" のように、
# マッチしたグループ1を赤色で表示
STRING_COLOR_MAP = {
    r"(FlutterLoader\.loadEntrypoint)": "RED",
    r"(Main function started)": "CYAN",
    r"^Exception$": "YELLOW",  # 行頭にException、行末に何もない場合のみマッチ
}

def colorize_log(line):
    """Flutter のログ行に色を付ける関数

    Args:
        line: ログの一行

    Returns:
        色付けされたログ行
    """

    for pattern, color in STRING_COLOR_MAP.items():
        match = re.search(pattern, line)
        if match:
            # マッチしたグループを色付け
            highlighted_text = f"{COLOR_CODES[color]}{match.group(1)}{COLOR_CODES['RESET']}"
            line = line.replace(match.group(1), highlighted_text)
    return line

def main():
    """Git Bash からの出力をパイプで受け取り、色付けして出力する関数
    """
    def signal_handler(sig, frame):
        print("\nCtrl+C で終了します。")
        sys.exit(0)

    signal.signal(signal.SIGINT, signal_handler)

    try:
        while True:
            line = sys.stdin.readline()
            if not line:
                break
            print(colorize_log(line), end="")
            sys.stdout.flush()
    except KeyboardInterrupt:
        print("\nCtrl+C で終了します。")

if __name__ == "__main__":
    main()

# --- 使い方 ---
# 1. このスクリプトを colorize.py として保存
# 2. Git Bash で以下のコマンドを実行
#    flutter run 2>&1 | python colorize.py
# 3. Ctrl+C で flutter run を終了してください。
#    その後、このスクリプトも自動的に終了します。
# 4. STRING_COLOR_MAP に、色を付けたい文字列と色を追加
#    例:
#      r"(Building flutter tool)": "GREEN",
#      r"(Error:)": "RED",

使い方**

1. 上記のスクリプトを `colorize.py` という名前で保存します。

2. Git Bash で以下のコマンドを実行します。

下記のコマンドの説明: 先頭のflutter runは、どんなコマンドでもいいですが、2>&1 以降は忘れないようにつけてください。

flutter run 2>&1 | python colorize.py

3. Ctrl+Cで終了してください。

その後、このスクリプトも自動的に終了します。

カスタマイズ**

`STRING_COLOR_MAP` に、色を付けたい文字列と色を追加することで、ハイライト表示する部分をカスタマイズできます。

例**

STRING_COLOR_MAP = {
    # ... (他のパターン)
    r"(Building flutter tool)": "GREEN",
    r"(Error:)": "RED",
}

まとめ**

このスクリプトを使うことで、簡単にカスタマイズできるようになっているので、ログが見やすくなり、開発効率が向上するでしょう。

ぜひ活用してみてください。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-07-29 (月) 19:06:57 (41d)