ログが大量に出力されて見づらいと感じることがあります。
そこで、今回はPythonでログを色分けして見やすくするスクリプトを紹介します。
```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", }
このスクリプトを使うことで、簡単にカスタマイズできるようになっているので、ログが見やすくなり、開発効率が向上するでしょう。
ぜひ活用してみてください。