nikkie-ftnextの日記

イベントレポートや読書メモを発信

#pyconshizu にて、ライブラリのロギングでNullHandler以外はいけませんと主張してきました

はじめに

bestの最上級、bestest!! nikkieです。

1ヶ月前のPyCon mini Shizuoka 2024 continueでの登壇報告エントリです。

目次

ライブラリ開発者に贈る「ロギングでNullHandler以外はいけません」

登壇予告

スライド

発表中の皆さんのツイートはこのあたりです。
https://posfie.com/@ftnext/p/GiCxLWu?page=8#h188_0

発表後記

この2行についてだけ30分話しました。

logger = logging.getLogger(__name__)
logger.addHandler(logging.NullHandler())

話したい話題だった1ので、発表の機会が実現して楽しく話していました。

今回の構成としては

  1. ライブラリ開発者向け
    • ロガー
    • ハンドラ
  2. アプリケーション開発者向け(=ライブラリのユーザ)
    • ロガー(ルートロガー、伝播)
    • 再びライブラリ開発者向けに:ロガーのレベル

です。
ライブラリ開発者 -> アプリケーション開発者 -> ライブラリ開発者 と往復します。

何回か練習して臨んだのですが、本番の空気感の影響か、話している途中でより分かりやすくなるんじゃないかという構成が降りてきたんですよね

  • まずロガーのレベルの話をする
    • 親のロガーのレベルを見る話
  • ルートロガーにハンドラを設定(=ロギングできる!)
  • その後、子のロガーのハンドラの話

loggingモジュールの解説だけを考えると、行ったり来たりしないこちらの方が分かりやすいかもと考えています。
こちらの構成の場合、「ライブラリのロギングは上記2行」と伝え切れるかは手を動かしてみないと分かりませんが...

いただいた反応

質問ありがとうございました!

からあげさんのイベントレポートでも触れていただいています。

ただ、自分の知識があまりになく途中でついていけなくなりました。自分はロガーのことが全然分かっていないという貴重な知見を得ることができました。

聞いていただき、ありがとうございました!
降ってきた構成でアウトプットしてみようかな〜

関連エントリ

(こちらの記事内にたくさんリンクあります)

延期期間で得た知識はlogging.config

happy-python-logging、育てるぞ〜(私が幸せにしてあげる!

終わりに

PyCon mini Shizuoka 2024 continueで、ライブラリでのロギングの話をしました。
一連のアウトプットの中でロギングの理解は深まり、シンプルな構成要素1つ1つが組み合わさってロギングを提供している様子には美しさを感じます。
一方、ここまで理解しないと使いこなせないという点は、なんとかならないかなとも思います2(誤った方法のライブラリを私がいくつも踏んで、この知見を得ました)

イベントレポートはこちらです。

運営スタッフ、登壇者、参加者の皆さま、素晴らしい機会をありがとうございました!


  1. このトークのプロポーザルは実はPyCon JPに出してもいます
  2. シンプルな構成要素を組み合わせるというのは、Pythonの開発環境まわりと同じだと思います。ということはロギングにもuv的なやつが来る...?