Pythonログ記録を強化する工夫
A Coding Implementation on Loguru for Designing Robust, Structured, Concurrent, and Production-Ready Python Logging Pipelines

Pythonのログ記録ツールLoguruを使い、堅牢で実用的なログシステムを構築する方法を解説。これにより、アプリのデバッグや監視が効率的になります。
このチュートリアルでは、Python向けの強力で柔軟かつ実用的なロギングライブラリであるLoguruを使った実践的なユースケースを実装します。クリーンで冪等なロギング設定を構築することから始めます。これは、ハンドラーの重複や乱雑な出力を生じさせることなく安全に再実行できます。そこから、構造化ロギング、コンテキストロギング、カスタムログレベル、グローバルパッチ適用、呼び出し可能なフォーマッター、インメモリシンクについて段階的に進めます。また、リッチな例外トレース、JSONログファイル、カスタムローテーション、圧縮、保持、非同期ロギング、スレッド実行、マルチプロセスセーフなロギング、標準ロギングモジュールのインターセプトなど、現実世界のロギングニーズにも対応します。すべてをColab対応のワークフローに保つことで、Loguruが本格的なPythonアプリケーションのデバッグ、監視、オブザーバビリティをどのようにサポートできるかを簡単にテスト、検査、理解できるようにします。 翻訳できないコード部分:Copy Code Copied Use a different Browser!pip install -q loguru nest_asyncioimport os, sys, time, json, glob, gzip, shutil, asyncio, logging, itertools, multiprocessingfrom collections import dequefrom concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutorfrom loguru import logger try: import nest_asyncio; nest_asyncio.apply() except Exception as e: print("nest_asyncio not applied:", e) WORKDIR = "/content/loguru_demo" if os.path.isdir("/content") else "/tmp/loguru_demo" os.makedirs(WORKDIR, exist_ok=True); os.chdir(WORKDIR) for f in glob.glob("*"): try: os.remove(f) except OSError: pass print(f"Working directory: {WORKDIR}\n") RESULTS = [] def check(name, condition, detail=""): ok = bool(condition); RESULTS.append((name, ok)) print(f" [{'PASS' if ok else 'FAIL'}] {name}" + (f" — {detail}" if detail else "")) def banner(t): print(f"\n{'='*64}\n {t}\n{'='*64}") _seq = itertools.count(1) def global_patcher(record): record["extra"].setdefault("env", "colab") record["extra"]["seq"] = next(_seq) _NOISE = {"env", "seq", "app"} def console_formatter(record): fmt = ("<green>{time:HH:mm:ss.SSS}</green> | <level>{lev