自分用のメモ
Djangoを使っていてログを取るためにdjango-structlogを使っている(非常に便利)。
ただテストをするときにも出力が出て邪魔でloggingの出力を抑える方法がないか調べていたらloggingの機能に近いものがあった。別にDjangoに限った話ではないが。
logging.disable(log_level=logging.CRITICAL)
引数にlog_levelを取れ、渡されたlog_level以下のレベルのログを出力しなくなる。こちらドキュメント。
Python3.7からはデフォルト引数でCRITICAL
になった様子。なので引数無しですべてのloggingの出力を抑えられる。
テスト時はコードの開始や、unittest
のsetUp()
メソッド内で実行すればいい。
逆にログ出力をもとに戻すには
logging.disable(log_level=logging.NOTSET)
すればいい。
これでテストの出力を汚染しないですんだ。めでたしめでたし。