日々精進

新しく学んだことを書き留めていきます

logging.config.dictConfigを実行すると「AttributeError: 'NoneType' object has no attribute 'flush'」エラー

原因はabsl-pyがデフォルトのログハンドラを書き換えてしまい、かつそいつがsys.stderrがNoneになる場合を考慮していないため。

恐らくPythonを別のプロセスからConsoleを表示させず起動すると標準エラー出力の出力先が無くてNoneになる。

無理矢理だけど、logging._handlerList = [] をlogging.config.dictConfigの前に実行すると直った。

デフォルトのログハンドラ書き換えとかお行儀悪すぎでしょ。。

参考:

qiita.com

github.com