お疲れ様です。
Pythonの標準モジュールのloggingを使ってログを表示する際、インストールした他のライブラリに設定されたログが邪魔になることがありました。
そういう時にライブラリごとに個別にログレベルを設定して表示を制限する方法があったのでそれをメモ。
開発版と本番でプログラムのログレベルの設定を切り替えたりする際にも使えると思います。
ロガーを含むライブラリ例
ライブラリごとに個別にログレベルを設定する方法
プログラム全体のログレベルはDEBUGで特定のライブラリのログだけWARNINGに設定した例です。
こうすることにより、自分が設定したログはDEBUG以上のログが表示され、ライブラリのログはWARNING以上でないと表示されないようにできます。
import logging # 全体のログレベル logging.basicConfig(level=logging.DEBUG) # 特定のライブラリだけ指定してログを抑制 logging.getLogger("urllib3").setLevel(logging.WARNING) logging.getLogger("boto3").setLevel(logging.WARNING) logging.getLogger("pymongo").setLevel(logging.WARNING)
ライブラリ内で名前を分けてさらに細かく設定されている場合にも対応可能です。
以下の例なら、pymongoのログのうちコマンド操作をログのみログレベルを変更することができます。
loggerに設定されたnameを指定する形です。
# pymongoの"command"のログだけ制御 logging.getLogger("pymongo.command").setLevel(logging.WARNING)
pymongoのドキュメントにはロガーの設定についての記載もありました。 pymongoは特にDEBUGのログが大量に表示されて自分が見たいログがすぐに流れるので、全体のログレベルを下げる場合は個別設定で制御した方が良いですね…。