nikkie
皆さんは標準ライブラリのloggingモジュールを使っていますか? 私は使っていますが、loggingモジュールは理解するのが難しかったですね。
どうやらこのモジュール、私にとってだけじゃなくPythonコミュニティにとっても難しそうなんですよね。 というのもChatGPT登場後に話題になったライブラリをいくつか触ったのですが、どれもロギングの実装が伸びしろ豊富でした。 実務で使うならロギングをしてアプリケーションの動きを手に取るように分かりたい、でもライブラリのロギングがオレオレすぎてライブラリユーザ側でハックが必要... いやーリアルワールドのロギングは大変苦労させられますね
こういった経験からPythonのロギングについては要点を押さえて伝えられるようになったと自負しているので、私のような苦労をする人が少しでも減るように、Pythonのロギングの基本の型を共有します。 ロギングは非機能な分、機能の実装に比べてかけられる時間も少なくなりがちだと思っています。 この発表と資料が、loggingモジュールに込められた組合せたロギングの1つの型を提供できたら嬉しいです(もちろん理解したうえで採用しないのもOKです)
loggingモジュールにはいろいろな要素が含まれます。 ロガー、ハンドラ、フォーマッタ、フィルタ。 これらを組合せたロギングの型を1つ示します。
(はじめにとまとめで3分)
loggingモジュールの構成要素(4分)
ロガーのレベルはどう決まる? ー NOTSET(5分)
getLogger()
したとき、そのレベルは?ルートロガーでロギングしよう(8分)
伸びしろのあるロガーと、対処術(6分)
※メッセージとしては「こんなハックをする必要がないように、ロギングを実装してください」
落穂拾い(4分)
RevChatGPT、crawl4ai、browser-useという近年話題になったライブラリをロギングしようとして、それぞれかなりやんちゃな実装をしているために苦労しました(同時にloggingへの理解は非常に深まりました)。 これはもう多数のPython使いにとってloggingが難しいんだなと思い至り、ライブラリのユーザに苦労を強いることのないロギング(loggingの思想に沿ったロギング実装)をコミュニティに伝えるべく、発表提案を送りました
Pythonでロギングを実装した経験は前提とします。loggingモジュールは使っていなくてもよいです。
Pythonのロギングに自信がない方や「INFO以上はファイルにロギング、ERROR以上はコンソールにもログ出力」がloggingだと自力で実装できないなという方は、ぜひ聞きに来てください。持ち帰れるものが多いと思います
logging.info()
やlogging.basicConfig()
を書いているなら、この話を聞くのをオススメしますプロフィール
株式会社ユーザベースの機械学習エンジニア。Pythonを書いて最近はLLMと戯れている。 Pythonで作った小さなソフトウェアをいくつか公開している。代表作:https://github.com/ftnext/sphinx-new-tab-link ブログを技術記事を中心に毎日書いて1000日経過 https://nikkie-ftnext.hatenablog.com/ https://x.com/ftnext 毎月のみんなのPython勉強会スタッフ。PyCon JP 2021座長